/// <summary>
        /// 指定したセクションのコテハンを取得。存在しなければnullを返す。
        /// </summary>
        /// <param name="section"></param>
        /// <returns></returns>
        private Kotehan GetInternal(string key)
        {
            Kotehan kote = new Kotehan(
                profile.GetString(key, "Name", String.Empty),
                profile.GetString(key, "Email", String.Empty),
                profile.GetBool(key, "Be", false));

            return((kote.IsEmpty) ? null : kote);
        }
        /// <summary>
        /// Setクラスのインスタンスを初期化
        /// </summary>
        /// <param name="header">コテハンを設定するスレッド情報</param>
        /// <param name="kotehan">設定する値が格納されたコテハン</param>
        public void Set(ThreadHeader header, Kotehan kotehan)
        {
            if (header == null)
            {
                throw new ArgumentNullException("header");
            }

            string section = GetSection(header);

            SetInternal(section, kotehan);
        }
        /// <summary>
        /// 指定した板のコテハンを設定
        /// </summary>
        /// <param name="board">コテハンを設定する板</param>
        /// <param name="kotehan">設定する値が格納されたコテハン</param>
        public void Set(BoardInfo board, Kotehan kotehan)
        {
            if (board == null)
            {
                throw new ArgumentNullException("board");
            }

            string section = GetSection(board);

            SetInternal(section, kotehan);
        }
        /// <summary>
        /// 指定したセクションにコテハンを設定
        /// </summary>
        /// <param name="section"></param>
        /// <param name="kotehan">nullまたは空のコテハンを指定するとセクションを削除</param>
        private void SetInternal(string section, Kotehan kotehan)
        {
            if (kotehan == null || kotehan.IsEmpty)
            {
                profile.Sections.Remove(section);
                return;
            }

            profile.SetValue(section, "Name", kotehan.Name);
            profile.SetValue(section, "Email", kotehan.Email);
            profile.SetValue(section, "Be", kotehan.Be);
        }
        /// <summary>
        /// 指定したスレッドに設定されているコテハンを取得
        /// </summary>
        /// <param name="header">スレッド情報</param>
        /// <returns>存在すればKotehanクラスのインスタンスを返す。存在しなければデフォルト値</returns>
        public Kotehan Get(ThreadHeader header)
        {
            if (header == null)
            {
                throw new ArgumentNullException("header");
            }

            string  key  = GetSection(header);
            Kotehan kote = GetInternal(key);

            if (kote == null)
            {
                kote = Get(header.BoardInfo);
            }

            return(kote);
        }
        /// <summary>
        /// 指定した板に設定されているコテハンを取得
        /// </summary>
        /// <param name="board">コテハンを取得する板</param>
        /// <returns>存在すればKotehanクラスのインスタンスを返す。存在しなければデフォルト値</returns>
        public Kotehan Get(BoardInfo board)
        {
            if (board == null)
            {
                throw new ArgumentNullException("board");
            }

            string  key  = GetSection(board);
            Kotehan kote = GetInternal(key);

            if (kote == null)
            {
                kote = Default;
            }

            return(kote);
        }