2013-04-04 5 views
11

私はCultureInfoの使い方を理解していると思います。私はシンプル行う場合ToString()default CultureInfo

const int a = 5; 
string b = a.ToString(); 

がにそれは同じである:つまり

const int a = 5; 
string b = a.ToString(CultureInfo.InvariantCulture); 

、ToStringメソッド()デフォルトの使用によりにInvariantCultureまたはのCurrentCultureまたはどちらもいますか?

答えて

18

ToStringは、InvariantCultureではなく、InvariantCultureで、CurrentCultureを使用します。指定されない場合

5

ToStringメソッドは、()のCurrentCultureを使用

参照:http://msdn.microsoft.com/en-us/library/6t7dwaa5(v=vs.85).aspx

"(G")と、現在の培養のためのNumberFormatInfo戻り値は、一般的な数値フォーマット 指定子でフォーマットされています" "すべての組み込みクラスおよび数値型の

2

ToString実装では、デフォルトで現在のスレッドによって使用される培養をCultureInfo.CurrentCulture cultureを使用しています。

これは、現在のカルチャ(したがって、文字列の書式設定と解析機能)がシステムによって異なることを意味します。私の意見では、これは設計ミスで、過去に人を噛まれています。 はデフォルトでInvariantCultureになり、システム間で同じ結果が得られますが、残念ながらそれはありません。