2012-04-12 9 views
7

Ich konvertiere eine nullable integer in eine string, und Resharper warnt mich, InvariantCulture zu verwenden.Wie konvertiere ich ein nullbares int in eine Zeichenfolge, die für Computer in verschiedenen Ländereinstellungen sicher ist?

shipment.ShipmentID.ToString() 

Eine schnelle Alt-Enter, Enter später, gibt mir diese:

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture) 

Leider ReSharper nicht erfüllt ist, und schlägt vor, die gleiche Sache, die keinen Sinn macht zu mich.

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

ToString() auf dem Nullable-int nicht bauen, mir einen Fehler geben Angabe Keine überladene Methode 'ToString' Takes 1 Argument.

Nicht nullbare Ints verhalten sich unterschiedlich.

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

Was soll ich tun, ein nullable int zu einem string konvertieren, die für Computer in verschiedenen Gegenden sicher sein wird?

+3

Was passiert, wenn Sie shipment.ShipmentID.Value verwenden? Bei Nullable-Typen überprüfe ich normalerweise mit dem .HasValue-Boolean auf Null und verwende dann den .Value. –

Antwort

12

Nullable<T> hat keine ToString() Überladung mit Argumenten; ReSharper behandelt die Situation nicht richtig.

Seit default(Nullable<int>).ToString() kehrt string.Empty, können Sie ReSharper glücklich wie diese machen:

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

Alternativ:

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

Überprüfen Sie diese link.

Sie sollten die invariante Kultur nur für Prozesse verwenden, die kulturunabhängige Ergebnisse erfordern, z. B. Systemdienste. In anderen Fällen ergeben sich Ergebnisse, die sprachlich inkorrekt oder kulturell unangemessen sind.

UPDATE: So einer der Hauptzwecke verwenden es zum Beispiel sein könnte 'if' Aussagevergleich.