Ist CultureInfo.CurrentCulture wirklich notwendig in String.Format ()?
-
19-08-2019 - |
Frage
Wie denken Sie, ist wirklich notwendig IFormatProvider
in Verfahren String.Format(string, object)
zu bieten?
Ist es besser, volle Variante zu schreiben
String.Format(CultureInfo.CurrentCulture, "String is {0}", str);
oder
String.Format("String is {0}", str);
Lösung
In der Regel werden Sie InvariantCulture verwenden, wenn die Zeichenfolge, die Sie erzeugen, werden in einer Art und Weise beibehalten werden, die der des aktuellen Benutzers Kultur (zum Beispiel in der Registrierung oder in einer Datei) unabhängig ist.
Sie wollen Current für Strings verwenden, die in der Benutzeroberfläche für den aktuellen Benutzer (Formulare, Berichte).
dargestellt werden sollenSubtle Fehler auftreten können, wenn Sie Current verwenden, wo Sie sollten InvariantCulture werden:. Fehler, die nur ans Licht kommen, wenn Sie mehrere Benutzer mit unterschiedlichen Kulturen haben denselben Registrierungseintrag oder eine Datei zugreifen, oder wenn ein Benutzer ändert seine Standardkultur
Explizit Current Angabe (der Standard, wenn das IFormatProvider Argument weggelassen wird), ist im Wesentlichen Dokumentation, die zeigt, dass Sie die oben in Betracht gezogen haben und dass die Zeichenfolge erzeugt werden sollte des aktuellen Benutzers Kultur verwenden. Deshalb FxCop empfiehlt, das IFormatProvider Argument angeben sollte.
Andere Tipps
Wenn Sie nicht angeben, die IFormatProvider
(oder äquivalent Pass null
) die meisten Argumenttypen formatiert schließlich fallen durch wird wird nach CultureInfo.CurrentCulture
. Wo es interessant ist, dass Sie eine benutzerdefinierte IFormatProvider
angeben, den ersten Riss an der Formatierung die Argumente bekommen kann, oder die Formatierung Kultur außer Kraft in Abhängigkeit von anderem Kontext.
Beachten Sie, dass CultureInfo.CurrentCulture
beeinflusst Argument Formatierung, nicht Auswahl Ressourcen; Ressourcenauswahl wird gesteuert durch CultureInfo.CurrentUICulture
.
Nein, Sie brauchen nicht auf die Kultur zu geben, es sei denn Ihr String kulturspezifische Elemente wie Dezimaltrennzeichen enthält, Währung usw., die auf der Kultur werden müssen gerendert abhängig.
Es ist besonders nützlich, wenn Sie über die Lokalisierung (Globalisierung) in Ihrer Anwendung kümmern. Das heißt, wenn Sie Ihre App wollen mehrere Sprachen und Kultur spezifische Formate zu unterstützen, sollten Sie diese verwenden.