Wenn Zahlen, Datums- und Uhrzeitangaben in Zeichenfolgen formatiert oder aus Zeichenfolgen analysiert werden, wird eine Kultur verwendet, um zu bestimmen, wie dies erfolgt. ZB in der dominanten en-US
Kultur haben Sie diese String-Darstellungen:
- 1.000.000,00 - eine Million mit einem zweistelligen Bruchteil
- 29.01.2013 - Datum dieser Veröffentlichung
In meiner Kultur ( da-DK
) haben die Werte diese Zeichenfolgendarstellung:
- 1.000.000,00 - eine Million mit einem zweistelligen Bruchteil
- 29-01-2013 - Datum dieser Veröffentlichung
Im Windows-Betriebssystem kann der Benutzer sogar die Formatierung von Zahlen und Datum / Uhrzeit anpassen und eine andere Kultur als die Kultur seines Betriebssystems auswählen. Die verwendete Formatierung ist die Wahl des Benutzers, wie es sein sollte.
Also , wenn Sie einen Wert formatieren , um den Benutzer angezeigt werden , indem zum Beispiel ToString
oder String.Format
oder aus einer Zeichenfolge analysiert unter Verwendung von DateTime.Parse
oder Decimal.Parse
der Standard ist das verwenden CultureInfo.CurrentCulture
. Dadurch kann der Benutzer die Formatierung steuern.
Bei vielen Formatierungen und Analysen von Zeichenfolgen werden jedoch keine Zeichenfolgen zwischen der Anwendung und dem Benutzer ausgetauscht, sondern zwischen der Anwendung und einem bestimmten Datenformat (z. B. einer XML- oder CSV-Datei). In diesem Fall möchten Sie nicht verwenden, CultureInfo.CurrentCulture
da das Formatieren und Parsen mit verschiedenen Kulturen unterbrochen werden kann. In diesem Fall möchten Sie verwenden CultureInfo.InvariantCulture
(was auf der en-US
Kultur basiert ). Dies stellt sicher, dass die Werte problemlos umrunden können.
Der Grund , dass ReSharper gibt Ihnen die Warnung ist , dass einige Anwendungs Autoren nicht bewusst diese Unterscheidung sind die zu unerwünschten Ergebnissen führen kann , aber sie nie entdecken , weil sie CultureInfo.CurrentCulture
heißt , en-US
die als das gleiche Verhalten hat CultureInfo.InvariantCulture
. Sobald die Anwendung jedoch in einer anderen Kultur verwendet wird, in der die Möglichkeit besteht, eine Kultur zum Formatieren und eine andere zum Parsen zu verwenden, kann die Anwendung unterbrochen werden.
Um es zusammenzufassen:
- Verwenden Sie
CultureInfo.CurrentCulture
(Standardeinstellung), wenn Sie eine Benutzerzeichenfolge formatieren oder analysieren.
- Verwenden
CultureInfo.InvariantCulture
Sie diese Option, wenn Sie eine Zeichenfolge formatieren oder analysieren, die von einer Software analysiert werden soll.
- Verwenden Sie selten eine bestimmte nationale Kultur, da der Benutzer nicht steuern kann, wie formatiert und analysiert wird.