CultureInfo.InvariantCulture Proprietà

Definizione

Ottiene l'oggetto CultureInfo indipendente dalle impostazioni cultura.Gets the CultureInfo object that is culture-independent (invariant).

public:
 static property System::Globalization::CultureInfo ^ InvariantCulture { System::Globalization::CultureInfo ^ get(); };
public static System.Globalization.CultureInfo InvariantCulture { get; }
member this.InvariantCulture : System.Globalization.CultureInfo
Public Shared ReadOnly Property InvariantCulture As CultureInfo

Valore della proprietà

Oggetto indipendente dalle impostazioni cultura (non variabile).The object that is culture-independent (invariant).

Commenti

Le impostazioni cultura invarianti sono indipendenti dalle impostazioni cultura. è associato alla lingua inglese, ma non a un paese/area geografica.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. Per specificare le impostazioni cultura invarianti per nome, utilizzare una stringa vuota ("") nella chiamata a un metodo di creazione di istanze di CultureInfo.You specify the invariant culture by name by using an empty string ("") in the call to a CultureInfo instantiation method. CultureInfo.InvariantCulture recupera anche un'istanza della lingua inglese.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Può essere usato in quasi tutti i metodi nello spazio dei nomi System.Globalization che richiede impostazioni cultura.It can be used in almost any method in the System.Globalization namespace that requires a culture. Gli oggetti restituiti da proprietà quali CompareInfo, DateTimeFormate NumberFormat riflettono anche le convenzioni di formattazione e confronto delle stringhe delle impostazioni cultura invarianti.The objects returned by properties such as CompareInfo, DateTimeFormat, and NumberFormat also reflect the string comparison and formatting conventions of the invariant culture.

A differenza dei dati dipendenti dalle impostazioni cultura, che sono soggetti a modifiche da parte della personalizzazione dell'utente o degli aggiornamenti al .NET Framework o al sistema operativo, i dati delle impostazioni cultura invarianti sono stabili nel tempo e nelle impostazioni cultura installate e non possono essere personalizzati dagli utenti.Unlike culture-sensitive data, which is subject to change by user customization or by updates to the .NET Framework or the operating system, invariant culture data is stable over time and across installed cultures and cannot be customized by users. Ciò rende le impostazioni cultura invarianti particolarmente utili per le operazioni che richiedono risultati indipendenti dalle impostazioni cultura, ad esempio le operazioni di formattazione e analisi che mantengono i dati formattati, le operazioni di ordinamento e ordinamento che richiedono la visualizzazione dei dati in un ordinamento fisso indipendentemente dalle impostazioni cultura.This makes the invariant culture particularly useful for operations that require culture-independent results, such as formatting and parsing operations that persist formatted data, or sorting and ordering operations that require that data be displayed in a fixed order regardless of culture.

Operazioni di stringaString Operations

È possibile usare la lingua inglese per le operazioni sulle stringhe dipendenti dalle impostazioni cultura che non sono interessate dalle convenzioni delle impostazioni cultura del thread corrente e che sono coerenti tra le diverse impostazioni cultura.You can use the invariant culture for culture-sensitive string operations that are not affected by the conventions of the current thread culture and that are consistent across cultures. È ad esempio possibile che si desideri che i dati ordinati siano visualizzati in un ordine fisso oppure applicare un set standard di convenzioni di combinazione di maiuscole e minuscole alle stringhe indipendentemente dalle impostazioni cultura del thread corrente.For example, you may want sorted data to appear in a fixed order or apply a standard set of casing conventions to strings regardless of the current thread culture. A tale scopo, passare l'oggetto InvariantCulture a un metodo con un parametro di CultureInfo, ad esempio Compare(String, String, Boolean, CultureInfo) e ToUpper(CultureInfo).To do this, you pass the InvariantCulture object to a method that has a CultureInfo parameter, such as Compare(String, String, Boolean, CultureInfo) and ToUpper(CultureInfo).

Salvataggio permanente dei datiPersisting Data

È possibile utilizzare la proprietà InvariantCulture per salvare in modo permanente i dati in un formato indipendente dalle impostazioni cultura.The InvariantCulture property can be used to persist data in a culture-independent format. Questo fornisce un formato noto che non cambia e che può essere usato per serializzare e deserializzare i dati tra le diverse impostazioni cultura.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. Dopo la deserializzazione, i dati possono essere formattati in modo appropriato in base alle convenzioni culturali dell'utente corrente.After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.

Se ad esempio si sceglie di salvare in modo permanente i dati di data e ora in formato stringa, è possibile passare l'oggetto InvariantCulture al metodo DateTime.ToString(String, IFormatProvider) o DateTimeOffset.ToString(IFormatProvider) per creare la stringa ed è possibile passare l'oggetto InvariantCulture al metodo DateTime.Parse(String, IFormatProvider) o DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) per convertire di nuovo la stringa in un valore di data e ora.For example, if you choose to persist date and time data in string form, you can pass the InvariantCulture object to the DateTime.ToString(String, IFormatProvider) or DateTimeOffset.ToString(IFormatProvider) method to create the string, and you can pass the InvariantCulture object to the DateTime.Parse(String, IFormatProvider) or DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) method to convert the string back to a date and time value. Questa tecnica garantisce che i valori di data e ora sottostanti non cambiano quando i dati vengono letti o scritti dagli utenti di impostazioni cultura diverse.This technique ensures that the underlying date and time values do not change when the data is read or written by users from different cultures.

Nell'esempio seguente vengono usate le impostazioni cultura invarianti per salvare in modo permanente un DateTime valore come stringa.The following example uses the invariant culture to persist a DateTime value as a string. Viene quindi analizzata la stringa e ne viene visualizzato il valore utilizzando le convenzioni di formattazione delle impostazioni cultura francese (Francia) e tedesco (Germania).It then parses the string and displays its value by using the formatting conventions of the French (France) and German (Germany) cultures.

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
Imports System.Globalization
Imports System.IO

Module Example
   Public Sub Main()
      ' Persist the date and time data.
      Dim sw As New StreamWriter(".\DateData.dat")
      
      ' Create a DateTime value.      
      Dim dtIn As DateTime = DateTime.Now
      ' Retrieve a CultureInfo object.
      Dim invC As CultureInfo = 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.
      Dim sr As New StreamReader(".\DateData.dat")
      Dim input As String = String.Empty
      Do While sr.Peek() >= 0 
         input = sr.ReadLine()
         Console.WriteLine("Stored data: {0}" , input)    
         Console.WriteLine()
         
         ' Parse the stored string.
         Dim dtOut As DateTime = DateTime.Parse(input, invC, DateTimeStyles.RoundtripKind)

         ' Create a French (France) CultureInfo object.
         Dim frFr As 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.
         Dim deDe As 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))
      Loop
      sr.Close()
   End Sub
End Module
' 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 sulla sicurezzaSecurity Decisions

Se si sta effettuando una decisione di sicurezza, ad esempio se si vuole consentire l'accesso a una risorsa di sistema, in base al risultato di un confronto tra stringhe o di una modifica del case, è consigliabile non usare la lingua inglese.If you are making a security decision (such as whether to allow access to a system resource) based on the result of a string comparison or a case change, you should not use the invariant culture. È invece consigliabile eseguire un confronto ordinale con distinzione tra maiuscole e minuscole o senza distinzione tra maiuscole e minuscole chiamando un metodo che include un parametro di StringComparison e fornendo StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase come argomento.Instead, you should perform a case-sensitive or case-insensitive ordinal comparison by calling a method that includes a StringComparison parameter and supplying either StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase as an argument. Il codice che esegue operazioni con stringhe dipendenti dalle impostazioni cultura può causare vulnerabilità di sicurezza se le impostazioni cultura correnti vengono modificate o se le impostazioni cultura nel computer in cui è in esecuzione il codice sono diverse da quelle utilizzate per testare il codice.Code that performs culture-sensitive string operations can cause security vulnerabilities if the current culture is changed or if the culture on the computer that is running the code differs from the culture that is used to test the code. Il confronto ordinale dipende invece esclusivamente dal valore binario dei caratteri confrontati.In contrast, an ordinal comparison depends solely on the binary value of the compared characters.

Si applica a

Vedi anche