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);

War es hilfreich?

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 sollen

Subtle 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top