CultureInfo.InvariantCulture CultureInfo.InvariantCulture CultureInfo.InvariantCulture CultureInfo.InvariantCulture Property

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 (tipo invariante).The object that is culture-independent (invariant).

Commenti

La lingua inglese è indipendente dalle impostazioni cultura; è associato con la lingua inglese, ma non con qualsiasi paese/area geografica.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. Specificare le impostazioni cultura invarianti in base al nome utilizzando una stringa vuota ("") nella chiamata a un CultureInfo metodo di creazione dell'istanza.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 delle impostazioni cultura invarianti.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Può essere utilizzato in quasi tutti i metodi di System.Globalization dello spazio dei nomi che richiede le impostazioni cultura.It can be used in almost any method in the System.Globalization namespace that requires a culture. Gli oggetti restituiti dalla proprietà, ad esempio CompareInfo, DateTimeFormat, e NumberFormat anche riflettono il confronto di stringhe e le convenzioni della lingua inglese di formattazione.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 soggette a modifiche per la personalizzazione dell'utente o per gli aggiornamenti di .NET Framework o del sistema operativo, dati delle impostazioni cultura invariabili sono stabili nel tempo e nelle impostazioni cultura installate e non è possibile personalizzare da parte degli 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. In questo modo le impostazioni cultura invarianti particolarmente utile per le operazioni che richiedono risultati indipendenti dalle impostazioni cultura, ad esempio le operazioni che rendono persistenti di analisi e formattazione formattati i dati, o l'ordinamento e ordinamento di operazioni che richiedono che i dati visualizzati un ordine 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 sulle stringheString Operations

È possibile usare le impostazioni cultura invarianti per operazioni su stringhe dipendenti dalle impostazioni cultura che non sono interessati dalle convenzioni delle impostazioni cultura del thread corrente e che siano coerenti tra le 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 i dati ordinati vengono visualizzati in un ordine fisso o applicare un set standard di convenzioni di maiuscole e minuscole in 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, si passa il InvariantCulture oggetto a un metodo che ha un CultureInfo parametro, 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).

Rendere persistenti i datiPersisting Data

Il InvariantCulture proprietà può essere utilizzata per rendere persistenti i dati in un formato indipendente dalle impostazioni cultura.The InvariantCulture property can be used to persist data in a culture-independent format. Ciò fornisce un formato noto che non modificati e che può essere utilizzato per serializzare e deserializzare i dati nelle impostazioni cultura.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. Dopo che i dati sono deserializzati, possono essere formattato 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.

Ad esempio, se si sceglie di rendere persistenti i dati di data e ora in formato stringa, è possibile passare il InvariantCulture dell'oggetto per il DateTime.ToString(String, IFormatProvider) o DateTimeOffset.ToString(IFormatProvider) metodo per creare la stringa ed è possibile passare il InvariantCulture dell'oggetto per il DateTime.Parse(String, IFormatProvider) o DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) metodo per convertire la stringa su 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 assicura che la data sottostante e i valori di ora non cambiano quando i dati vengono letti o scritti da parte degli utenti di culture 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.

L'esempio seguente usa le impostazioni cultura invarianti per rendere persistente un DateTime valore sotto forma di stringa.The following example uses the invariant culture to persist a DateTime value as a string. Quindi, analizza la stringa e visualizza il relativo valore usando le convenzioni di formattazione delle impostazioni cultura tedesco (Germania) e francese (Francia).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 relative alla sicurezzaSecurity Decisions

Se si apportano una decisione relativa alla sicurezza (ad esempio, se si desidera consentire l'accesso a una risorsa di sistema) in base al risultato di un confronto tra stringhe o di una modifica della combinazione, non utilizzare le impostazioni cultura invarianti.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. Al contrario, è necessario eseguire un confronto ordinale tra maiuscole e minuscole o maiuscole e minuscole chiamando un metodo che include un' StringComparison parametro e fornendo essere 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. Codice che esegue operazioni sulle stringhe dipendenti dalle impostazioni cultura può causare vulnerabilità di sicurezza se viene modificata le impostazioni cultura correnti o se le impostazioni cultura nel computer che esegue il codice è diversa dalle impostazioni cultura che consente di 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. Al contrario, un confronto ordinale dipende 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