Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Proprietà CultureInfo.InvariantCulture

Ottiene l'oggetto CultureInfo indipendente dalle impostazioni cultura.

Spazio dei nomi:  System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

public static CultureInfo InvariantCulture { get; }

Valore proprietà

Tipo: System.Globalization.CultureInfo
Oggetto indipendente dalle impostazioni cultura (tipo invariante).

Le impostazioni cultura invarianti sono indipendenti dalle impostazioni cultura; sono associate alla lingua inglese ma non a un paese particolare. È possibile specificare le impostazioni cultura invarianti per nome utilizzando una stringa vuota ("") nella chiamata ad un metodo di creazione delle istanze CultureInfo. CultureInfo.InvariantCulture consente anche di recuperare un'istanza della lingua inglese. Può essere utilizzata praticamente in qualsiasi metodo, nello spazio dei nomi System.Globalization in cui sono necessarie le impostazioni cultura. Gli oggetti restituiti dalle proprietà come CompareInfo, DateTimeFormat e NumberFormat riflettono anche le convenzioni sul confronto di stringhe e di formattazione delle impostazioni cultura invarianti.

A differenza dei dati che dipendono dalle impostazioni cultura, soggetti a personalizzazioni da parte dell'utente o ad aggiornamenti di .NET Framework o del sistema operativo, i dati delle impostazioni cultura invarianti sono stabili nel tempo e attraverso diverse impostazioni cultura installate e non possono essere personalizzati dagli utenti. Questo rende le impostazioni cultura invarianti particolarmente utili per le operazioni che richiedono risultati indipendenti dalle impostazioni cultura, come le operazioni di formattazione e analisi che mantengono dati formattati, o ordinati oppure operazioni di ordinamento che richiedono che i dati vengano visualizzati in un certo ordine indipendentemente dalle impostazioni cultura.

Operazioni su stringhe

È possibile utilizzare le impostazioni cultura invarianti per le operazioni sulle stringhe che dipendono dalle impostazioni cultura che non sono influenzate dalle convenzioni delle impostazioni cultura del thread corrente e che sono consistenti attraverso diverse impostazioni cultura. Ad esempio, potrebbe essere necessario visualizzare i dati ordinati in un certo ordine o applicare un set di convenzioni standard sulla combinazione di maiuscole e minuscole sulle stringhe indipendentemente dalle impostazioni cultura del thread corrente. A questo scopo, è necessario passare l'oggetto InvariantCulture a un metodo contenente un parametro CultureInfo, ad esempio Compare(String, String, Boolean, CultureInfo) e ToUpper(CultureInfo).

Archiviazione dei dati

La proprietà InvariantCulture può essere utilizzata per rendere i dati persistenti in un formato indipendente dalle impostazioni cultura. In questo modo, si fornisce un formato noto che resta invariato e che può essere utilizzato per serializzare e deserializzare i dati tra le impostazioni cultura. Dopo che i dati sono stati deserializzati, questi possono essere formattati in modo appropriato in base alle convenzioni culturali dell'utente corrente.

Ad esempio, se si sceglie di mantenere le informazioni di data e ora in formato stringa, è possibile passare l'oggetto InvariantCulture al metodo DateTimeOffset.ToString(IFormatProvider) o DateTime.ToString(String, IFormatProvider) per creare la stringa e passare l'oggetto InvariantCulture al metodo DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) o DateTime.Parse(String, IFormatProvider) per convertire di nuovo la stringa in un valore di data e ora. In questo modo i valori di data e ora sottostanti rimangono immutati quando i dati vengono letti o scritti da utenti con impostazioni cultura differenti.

Nell'esempio seguente vengono utilizzate le impostazioni cultura invarianti per mantenere il valore DateTime come stringa. Quindi si analizza la stringa e si visualizza il valore utilizzando le convenzioni di formattazione delle impostazioni cultura del francese (Francia) e del tedesco (Germania).


using System;
using System.IO;
using System.Globalization;

public class Example 
{
   public static void Main() 
   {
      // Persist the date and time data.
      StreamWriter sw = new StreamWriter(@".\DateData.dat");

      // Create a DateTime value.      
      DateTime dtIn = DateTime.Now;
      // Retrieve a CultureInfo object.
      CultureInfo invC = CultureInfo.InvariantCulture;

      // Convert the date to a string and write it to a file.
      sw.WriteLine(dtIn.ToString("r", invC));
      sw.Close();

      // Restore the date and time data.
      StreamReader sr = new StreamReader(@".\DateData.dat");
      String input;
      while ((input = sr.ReadLine()) != null) 
      {
         Console.WriteLine("Stored data: {0}\n" , input);    

         // Parse the stored string.
         DateTime dtOut = DateTime.Parse(input, invC, DateTimeStyles.RoundtripKind);

         // Create a French (France) CultureInfo object.
         CultureInfo frFr = new CultureInfo("fr-FR");
         // Displays the date formatted for the "fr-FR" culture.
         Console.WriteLine("Date formatted for the {0} culture: {1}" , 
                           frFr.Name, dtOut.ToString("f", frFr));

         // Creates a German (Germany) CultureInfo object.
         CultureInfo deDe= new CultureInfo("de-De");
         // Displays the date formatted for the "de-DE" culture.
         Console.WriteLine("Date formatted for {0} culture: {1}" , 
                           deDe.Name, dtOut.ToString("f", deDe));
      }
      sr.Close();
   }
}
// The example displays the following output:
//    Stored data: Tue, 15 May 2012 16:34:16 GMT
//    
//    Date formatted for the fr-FR culture: mardi 15 mai 2012 16:34
//    Date formatted for de-DE culture: Dienstag, 15. Mai 2012 16:34


Decisioni relative alla sicurezza

Se si deve prendere una decisione relativa alla sicurezza (ad esempio se consentire l'accesso ad una risorsa di sistema) basandosi sul risultato di un confronto di stringhe o su una modifica di maiuscole e minuscole, le impostazioni cultura invarianti non sono consigliate. È necessario invece eseguire un confronto ordinale con distinzione tra maiuscole e minuscole o senza distinzione tra maiuscole e minuscole chiamando un metodo che include un parametro StringComparison e fornendo StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase come argomento. Se le impostazioni cultura invarianti vengono modificate oppure le impostazioni cultura del computer in cui viene eseguito il codice non corrispondono a quelle utilizzate per i test del codice, il codice che esegue operazioni sulle stringhe dipendenti dalle impostazioni cultura può causare vulnerabilità a livello di sicurezza. Al contrario, un confronto basato su ordinale dipende unicamente dal valore binario dei caratteri confrontati.

.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft