Könnte jemand ein Beispiel geben, um die Verwendung der invarianten Kultur zu demonstrieren ? Ich verstehe nicht, was die Dokumentation beschreibt.
Könnte jemand ein Beispiel geben, um die Verwendung der invarianten Kultur zu demonstrieren ? Ich verstehe nicht, was die Dokumentation beschreibt.
Antworten:
Die invariante Kultur ist eine spezielle Kultur, die nützlich ist, weil sie sich nicht ändert. Die aktuelle Kultur kann sich von einem Benutzer zum anderen oder sogar von einem Lauf zum anderen ändern, sodass Sie sich nicht darauf verlassen können, dass sie gleich bleibt.
Die Möglichkeit, jedes Mal dieselbe Kultur zu verwenden, ist in mehreren Flüssen sehr wichtig, z. B. bei der Serialisierung: Sie können in einer Kultur einen Wert von 1,1 und in einer anderen einen Wert von 1,1 haben. Wenn Sie versuchen, den Wert "1,1" in der zweiten Kultur zu analysieren, schlägt die Analyse fehl. Sie können jedoch die invariante Kultur verwenden, um eine Zahl in eine Zeichenfolge zu konvertieren und sie später von jedem Computer mit einem beliebigen Kultursatz zurück zu analysieren.
// Use some non-invariant culture.
CultureInfo nonInvariantCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = nonInvariantCulture;
decimal dec = 1.1m;
string convertedToString = dec.ToString();
// Simulate another culture being used,
// following code can run on another computer.
nonInvariantCulture.NumberFormat.NumberDecimalSeparator = ",";
decimal parsedDec;
try
{
// This fails because value cannot be parsed.
parsedDec = decimal.Parse(convertedToString);
}
catch (FormatException)
{
}
// However you always can use Invariant culture:
convertedToString = dec.ToString(CultureInfo.InvariantCulture);
// This will always work because you serialized with the same culture.
parsedDec = decimal.Parse(convertedToString, CultureInfo.InvariantCulture);
System.Globalization
Namespace.
CultureInfo.InvariantCulture
funktioniert, weil Sie mit derselben Kultur serialisiert haben ... ist es dann nicht dasselbe wie die Verwendung CultureInfo.CurrentCulture
?
CultureInfo.InvariantCulture
wissen Sie, dass Sie immer mit auf eine Dezimalzahl zurückgreifen können CultureInfo.InvariantCulture
. Wenn Sie CultureInfo.CurrentCulture
zum Serialisieren verwenden, hat Ihr Benutzer möglicherweise "en-US" als aktuelle Kultur. Der nächste Benutzer, der es zurück auf eine Dezimalstelle analysiert, verfügt möglicherweise über eine aktuelle Kultur, die "," als Trennzeichen verwendet.
Eine gefälschte Kultur basierend auf Englisch mit definiertem Verhalten. Hervorragend geeignet, um beispielsweise Inhalte in Konfigurationsdateien zu schreiben, damit diese unabhängig von der vom Benutzer definierten Kultur gelesen und geschrieben werden können.
Grundsätzlich ist es eine spezifische Kultur, die künstlich ist und sich nicht ändern wird .
Es wird für Dinge verwendet, die unabhängig von der Kultur gleich sind (die nicht in eine Kultur X übersetzt werden müssen, um angemessen zu sein).
Beispiel: https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx . Wenn Sie eine app-spezifische Datei schreiben, mit der der Benutzer nicht herumspielen sollte, sollten Sie InvariantCulture für alle Methoden verwenden, die einen Kulturparameter berücksichtigen.
Beachten Sie, dass gemäß den oben verlinkten Dokumenten:
Eine Anwendung sollte die invariante Kultur jedoch nur für Prozesse verwenden, die kulturunabhängige Ergebnisse erfordern, z. B. das Formatieren und Parsen von Daten, die in einer Datei gespeichert bleiben.
Die invariante Kultur ist kulturunempfindlich; Es ist mit der englischen Sprache verbunden, aber nicht mit einem Land / einer Region.
CultureInfo.InvariantCulture ruft eine Instanz der invarianten Kultur ab. Es kann in fast jeder Methode im System.Globalization-Namespace verwendet werden, für die eine Kultur erforderlich ist.
Die von Eigenschaften wie CompareInfo, DateTimeFormat und NumberFormat zurückgegebenen Objekte spiegeln auch die Konventionen für Zeichenfolgenvergleich und Formatierung der invarianten Kultur wider. Die InvariantCulture-Eigenschaft ist praktisch, wenn Sie persistente Daten in einem kulturunabhängigen Format anzeigen möchten .
Wenn Sie beispielsweise eine Zahl oder eine Uhrzeit in einem bestimmten Format unabhängig von der aktuellen Kultur der Anwendung anzeigen möchten, können Sie CultureInfo.InvariantCulture verwenden .
Es ist eine universelle einfache, nicht regional spezifische englische Sprache und andere verwandte Informationen. Es ist wie die Sprache der Programmiersprache. Sie können sich beim Einrichten eines universellen Kalenders darauf verlassen. in Situationen, in denen Sie Controllernamen, URLs, Delegatennamen usw. generieren müssen. und brauchen Dinge, um unter allen Benutzern natürlich und universell zu handeln.