boolean structureのMSDN記事を読んでいたところ、ブール値にはTrueStringとFalseStringの2つのフィールドがあります。これらはそれぞれ "True"と "False"を返します。なぜbool.TrueStringとbool.FalseStringが存在するのですか?
検索した後、唯一の例はthis dotnetperls articleです。記事は次のように述べています。
プログラムでは、これらの文字列が必要なことがよくあります。 TrueStringとFalseStringは、読み取り専用のメンバーの便利なペアです。それらは文字列形式の真理値を表します。これらは、文字列リテラルを直接使用して間接参照と抽象化を提供します。
これは明らかに、状況によっては便利です。しかし、同じ記事は現実的な例(とにかくIMHO)を提供することができません。
これ以上の読者も私の注目を集めました:TrueStringとFalseStringはpublic static readonly fieldsです。そしてthis dornetperls article状態:
言語仕様では、今後フィールドが変更される可能性がある場合は、public static readonly fieldsを使用することをお勧めします。
これは多分わかります。 .NET開発者が "True"と "False"をそれぞれ "OkeyDokey"と "Negative"に変更しようと決心した場合、TrueStringとFalseStringを使うのは賢明です。
しかし、それでも私には疑問が残っています。どのようなシナリオで文字列をブール値の文字列リテラルと比較したいのですか?見た目には:「プログラムはしばしばそれらを必要とする」。
あなたが独自の構文解析をしているのであれば、(何らかの理由で 'Boolean.Parse'を利用しないと)想像することができます。私はおそらく、「プログラムが必要とする」という声明に反すると主張するだろうが、BCLチームが含めることができるように、それらを使用することは可能であり、それはかなり低い結果である。おそらく 'Boolean.ToString'メソッドは、少なくともその意味で出力するときにブール型文字列の表現を単一/中央で宣言し、開発者はこれを使って' bool'からの文字列出力を比較することができますハードコーディング '' True ''よりも優れています。 –
... .NET環境は多くの言語をサポートするように設計されているためです。 http://stackoverflow.com/a/491367/284240 –
@TimSchmelterなぜ、多言語サポートが、ブール値の文字列リテラルを知りたいのかと関係がある理由を説明できますか?編集:あなたが投稿したリンクの質問は私に良い例を与えた。 – Jordy