2012-04-12 6 views
7

私はnullable integerstringに変換しています。ResharperはInvariantCultureの使用を警告しています。nullable intを、異なるロケールのコンピュータで安全な文字列に変換するにはどうすればよいですか?

shipment.ShipmentID.ToString() 

迅速Alt-Enterキーを、後でを入力し、私にこれを与える:

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture) 

は残念ながら、ReSharperのは満たされず、しても意味がありません同じことを、示唆私。

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture, 
           CultureInfo.InvariantCulture) 

NULL可能int型のToStringメソッド()はオーバーロードメソッド 'ToStringメソッドが' 1つの引数を取らない私にを示すエラーを与えて、ビルドしません。

nullを許可しないintは、動作が異なります。

int requiredInt = 3; 
// no Resharper or compiler warning 
var stringFromRequiredInt = requiredInt.ToString(CultureInfo.InvariantCulture); 

私はnullable int異なるロケールでのコンピュータのために安全になりますstringに変換するにはどうすればよいですか?

+3

あなたがshipment.ShipmentID.Valueを使用するとどうなりますかnull可能な型では、通常、.HasValueブール値を使用してnullをチェックしてから、.Valueを使用します。 –

答えて

12

Nullable<T>引数を伴うToString()のオーバーロードはありません。 ReSharperは状況を正しく処理していません。

default(Nullable<int>).ToString()戻りstring.Emptyので、あなたは、このようなReSharperのを幸せにすることができます。また

shipment.ShipmentID.HasValue 
     ? shipment.ShipmentID.Value.ToString(CultureInfo.InvariantCulture) : "" 

shipment.ShipmentID != null 
     ? ((int)shipment.ShipmentID).ToString(CultureInfo.InvariantCulture) : "" 
1

これをチェックするlink

カルチャに依存しない結果を必要とするプロセス(システムサービスなど)では、不変のカルチャを使用する必要があります。それ以外の場合は、言語的に不正確または文化的に不適切な結果が生成されます。

UPDATE:それは例えばあるかもしれないので、1主な目的の使用に'if'文の比較。

関連する問題