CultureInfo.InvariantCulture Propriété

Définition

Obtient l'objet CultureInfo qui est indépendant de la culture (invariant).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

Valeur de propriété

Objet qui est indépendant de la culture (invariant).The object that is culture-independent (invariant).

Remarques

La culture dite indifférente est indépendante de la culture ; Il est associé à la langue anglaise, mais pas à un pays ou une région.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. Vous spécifiez la culture dite indifférente par nom à l’aide d’une chaîne vide ("") dans l’appel à une méthode d’instanciation CultureInfo.You specify the invariant culture by name by using an empty string ("") in the call to a CultureInfo instantiation method. CultureInfo.InvariantCulture récupère également une instance de la culture dite indifférente.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Il peut être utilisé dans pratiquement n’importe quelle méthode de l’espace de noms System.Globalization qui requiert une culture.It can be used in almost any method in the System.Globalization namespace that requires a culture. Les objets retournés par des propriétés, telles que CompareInfo, DateTimeFormatet NumberFormat reflètent également les conventions de comparaison de chaînes et de mise en forme de la culture dite indifférente.The objects returned by properties such as CompareInfo, DateTimeFormat, and NumberFormat also reflect the string comparison and formatting conventions of the invariant culture.

Contrairement aux données dépendantes de la culture, qui sont sujettes à modification par la personnalisation de l’utilisateur ou par les mises à jour du .NET Framework ou du système d’exploitation, les données de culture invariantes sont stables au fil du temps et sur les cultures installées et ne peuvent pas être personnalisées par les utilisateurs.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. Cela rend la culture dite indifférente particulièrement utile pour les opérations qui requièrent des résultats indépendants de la culture, tels que les opérations de mise en forme et d’analyse qui rendent persistantes les données mises en forme, ou les opérations de tri et de classement qui requièrent que ces données soient affichées dans un ordre fixe, quelle que soit la culture.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.

Opérations de chaînesString Operations

Vous pouvez utiliser la culture dite indifférente pour les opérations de chaînes dépendantes de la culture qui ne sont pas affectées par les conventions de la culture de thread actuelle et qui sont cohérentes entre les cultures.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. Par exemple, vous souhaiterez peut-être que les données triées apparaissent dans un ordre fixe ou appliquer un ensemble standard de conventions de casse aux chaînes, quelle que soit la culture du thread en cours.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. Pour ce faire, vous transmettez l’objet InvariantCulture à une méthode qui a un paramètre CultureInfo, tel que Compare(String, String, Boolean, CultureInfo) et 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).

Persistance des donnéesPersisting Data

La propriété InvariantCulture peut être utilisée pour rendre les données persistantes dans un format indépendant de la culture.The InvariantCulture property can be used to persist data in a culture-independent format. Cela fournit un format connu qui ne change pas et qui peut être utilisé pour sérialiser et désérialiser des données entre les cultures.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. Une fois les données désérialisées, elles peuvent être mises en forme de manière appropriée en fonction des conventions culturelles de l’utilisateur actuel.After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.

Par exemple, si vous choisissez de conserver les données de date et d’heure sous forme de chaîne, vous pouvez passer l’objet InvariantCulture à la méthode DateTime.ToString(String, IFormatProvider) ou DateTimeOffset.ToString(IFormatProvider) pour créer la chaîne, et vous pouvez passer l’objet InvariantCulture à la méthode DateTime.Parse(String, IFormatProvider) ou DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) pour reconvertir la chaîne en une valeur de date et d’heure.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. Cette technique garantit que les valeurs de date et d’heure sous-jacentes ne changent pas lorsque les données sont lues ou écrites par les utilisateurs de cultures différentes.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’exemple suivant utilise la culture dite indifférente pour rendre persistant une valeur DateTime en tant que chaîne.The following example uses the invariant culture to persist a DateTime value as a string. Il analyse ensuite la chaîne et affiche sa valeur à l’aide des conventions de mise en forme des cultures français (France) et allemand (Allemagne).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

Décisions de sécuritéSecurity Decisions

Si vous prenez une décision de sécurité (par exemple, si vous souhaitez autoriser l’accès à une ressource système) en fonction du résultat d’une comparaison de chaînes ou d’un changement de casse, vous ne devez pas utiliser la culture dite indifférente.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. Au lieu de cela, vous devez effectuer une comparaison ordinale respectant la casse ou non sensible à la casse en appelant une méthode qui comprend un paramètre StringComparison et en fournissant StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase comme argument.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. Le code qui exécute des opérations de chaînes dépendantes de la culture peut entraîner des failles de sécurité si la culture actuelle est modifiée ou si la culture sur l’ordinateur qui exécute le code diffère de la culture utilisée pour tester le code.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. En revanche, une comparaison ordinale dépend uniquement de la valeur binaire des caractères comparés.In contrast, an ordinal comparison depends solely on the binary value of the compared characters.

S’applique à

Voir aussi