0

C# の浮動小数点型の場合、「文化効果」の 1 つは「.」の代わりに「,」を使用できることだと理解していますが、整数型の場合、考えられる効果は何ですか?

からお願いします

 Int32.TryParse() 

CultureInfo.InvariantCulture (IFormatProvider) 引数を受け入れますが、

 (T)Enum.Parse(typeof(T), enumString, true);

Enum.Parse() は整数または列挙型リテラルを受け入れますが、そうではありません。

例: クライアントは 1 つのカルチャで Int32.ToString() を使用し、サーバーは別のカルチャで Enum.Parse() を使用します (引数がないため現在)。

4

1 に答える 1

1

ドキュメントでは実際の動作が明確ではないため、Enum.Parse(.NET 4.5 で) のソース コードを調べました。入力文字列から整数値を解析するときは、常にインバリアント カルチャ (現在のカルチャではなく) を使用します。具体的には、整数を解析する行は次のとおりです。

temp = Convert.ChangeType(value, underlyingType, CultureInfo.InvariantCulture);

数値は、最初の文字が数字 ( を使用Char.IsDigit)、'+'、またはであるかどうかを確認することによって識別されます'-'Enum.Parseしたがって、クライアントでインバリアント カルチャを使用して文字列に変換し、サーバーで使用し、どちらも .NET 4.5 を使用する場合は安全です。ただし、これが古いバージョンのフレームワークでの動作なのか、将来のバージョンで保証されるのかはわかりません。

于 2013-07-27T03:14:11.517 に答える