2008-11-19から1日間の記事一覧

イディオム:StringBuilder

静的メソッド SetToString の本体は、2つの処理(前半/後半)に大別できます。 public static string SetToString(object set, IEnumerable items) { string setTypeStr; ... StringBuilder sb = new StringBuilder(); ... }前半では、与えられた引数から型…

ソースコード:SetHelpers.SetToString()

静的クラス SetHelpers では、クラス SetCollection/FrozenSetCollection で共有するメソッドを支援する、補助的な処理群(Helpers)を実現します。 /// /// Contains common set functionality between set and forzenSet /// static class SetHelpers { pu…

要素を区切るときに

要素を含まないか、1つだけ含むときには、カンマ「,」で区切る必要はありません。そのため、foreach ループでは、少し工夫が必要です。すると、次のような構造が見えてきます。 string comma = ""; foreach (...) { sb.Append(comma); ... comma = ", "; }…

要素を含まないときに

要素を含まないときには、括弧 ([]) で括るだけです。 sb.Append("(["); ... foreach (object o in items) { ... } sb.Append("])");対象となる IEnumerable items が、要素を含まないときには、foreach ループの本体を実行しません。そのため、作業領域 sb …

インスタンスの文字列表現

リターン値を得るために、変数 sb が作業領域 StringBuilder を保持します。StringBuilder を使うと、文字列を編集(追加/削除/置換/挿入)したいときに便利です。すると、次のような構造が見えてきます。 StringBuilder sb = new StringBuilder(); ... sb.A…

インスタンスの型情報

前半には、次に示す典型的な C# のイディオムが記述してあります。 string s; Type t = obj.GetType(); if (t == typeof(T1)) { s = "t1"; } else if (t == typeof(T2)) { s = "t2"; } else { s = ... // その他 }このイディオムに照らし合わせて見ると、与…

ソースコードの歩き方《IronPython》Set.__str__ 3/3

《Previous|3/3|Next》 Python.use(better, src=”IronPython”) # ソースコードを散策する《記事一覧》