Qualcuno potrebbe fare un esempio per dimostrare l'uso della cultura invariante ? Non capisco cosa descrive la documentazione.
Qualcuno potrebbe fare un esempio per dimostrare l'uso della cultura invariante ? Non capisco cosa descrive la documentazione.
Risposte:
La cultura invariante è una cultura speciale che è utile perché non cambierà. La cultura corrente può cambiare da un utente all'altro, o anche da una corsa all'altra, quindi non puoi fare affidamento sul fatto che rimanga lo stesso.
Essere in grado di utilizzare la stessa cultura ogni volta è molto importante in diversi flussi, ad esempio la serializzazione: è possibile avere un valore 1,1 in una cultura e 1,1 in un'altra. Se proverai ad analizzare il valore "1,1" nella seconda cultura, l'analisi fallirà. Tuttavia è possibile utilizzare la cultura invariante per convertire un numero in una stringa e successivamente analizzarlo da qualsiasi computer con qualsiasi set di cultura.
// 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
spazio dei nomi.
CultureInfo.InvariantCulture
funziona perché hai serializzato con la stessa cultura .... allora non è lo stesso che usare CultureInfo.CurrentCulture
?
CultureInfo.InvariantCulture
allora saprai che sarai sempre in grado di tornare indietro usando un decimale CultureInfo.InvariantCulture
. Se usi CultureInfo.CurrentCulture
per serializzare, il tuo utente potrebbe avere "en-US" come cultura attuale. L'utente successivo che lo analizza con un decimale potrebbe avere una cultura corrente che utilizza "," per un separatore.
Una cultura falsa basata sull'inglese con un comportamento definito. Ottimo per scrivere, ad esempio, roba in file di configurazione in modo che possa essere letto e scritto indipendentemente dalla cultura definita dall'utente.
Fondamentalmente è una cultura specifica che è artificiale e non cambierà .
È usato per cose uguali a prescindere dalla cultura (che non ha bisogno di essere tradotto in alcune culture X per essere appropriato)
come per esempio - https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx . Quando si scrive un file specifico dell'app che l'utente non deve fare confusione, è necessario utilizzare InvariantCulture per tutti i metodi che accettano un parametro di cultura.
Nota che per i documenti collegati sopra:
Tuttavia, un'applicazione deve utilizzare la cultura invariante solo per i processi che richiedono risultati indipendenti dalla cultura, come la formattazione e l'analisi dei dati persistenti in un file.
La cultura invariante è insensibile alla cultura; è associato con la lingua inglese ma non con nessun paese / regione.
CultureInfo.InvariantCulture recupera un'istanza della cultura invariante. Può essere utilizzato in quasi tutti i metodi nello spazio dei nomi System.Globalization che richiede una cultura.
Gli oggetti restituiti da proprietà come CompareInfo, DateTimeFormat e NumberFormat riflettono anche le convenzioni sul confronto delle stringhe e sulla formattazione della cultura invariante. La proprietà InvariantCulture è utile quando si desidera visualizzare i dati persistenti in un formato indipendente dalla cultura .
Ad esempio, se si desidera visualizzare un numero o un datetime in un formato specifico indipendentemente dalla cultura corrente dell'applicazione, è possibile utilizzare CultureInfo.InvariantCulture .
Si tratta di una lingua inglese semplice non specifica per regione e di altre informazioni correlate. È come il linguaggio del linguaggio di programmazione stesso. Puoi fare affidamento su di esso nella creazione di un calendario universale; in situazioni in cui è necessario generare nomi di controller, URL, nomi di delegati ... ecc. e hanno bisogno di cose per agire in modo naturale e universale tra tutti gli utenti.