CultureInfo.InvariantCulture Propriété

Définition

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

CultureInfo

Objet qui est indépendant de la culture (invariant).

Remarques

La culture indifférente n’est pas sensible à la culture; il est associé à la langue anglaise, mais pas à n’importe quel pays/région. Vous spécifiez la culture indifférente par nom à l’aide d’une chaîne vide («  ») dans l’appel à une méthode d’instanciation CultureInfo . CultureInfo.InvariantCulture récupère également une instance de la culture indifférente. Il peut être utilisé dans presque n’importe quelle méthode de l’espace System.Globalization de noms qui nécessite une 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 indifférente.

Contrairement aux données sensibles à la culture, qui sont susceptibles de changer par personnalisation de l’utilisateur ou par des mises à jour du .NET Framework ou du système d’exploitation, les données de culture indifférentes sont stables au fil du temps et dans les cultures installées et ne peuvent pas être personnalisées par les utilisateurs. Cela rend la culture indifférente particulièrement utile pour les opérations qui nécessitent des résultats indépendants de la culture, tels que la mise en forme et l’analyse des opérations qui conservent les données mises en forme, ou les opérations de tri et de classement qui nécessitent que les données soient affichées dans un ordre fixe, quelle que soit la culture.

Opérations de chaîne

Vous pouvez utiliser la culture indifférente pour les opérations de chaîne sensibles à la culture qui ne sont pas affectées par les conventions de la culture actuelle et cohérentes entre les 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 actuelle. Pour ce faire, vous passez l’objet InvariantCulture à une méthode qui a un CultureInfo paramètre, tel que Compare(String, String, Boolean, CultureInfo) et ToUpper(CultureInfo).

Persistance des données

La InvariantCulture propriété peut être utilisée pour conserver les données dans un format indépendant de la culture. 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. 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.

Par exemple, si vous choisissez de conserver les données de date et d’heure sous forme de chaîne, vous pouvez transmettre l’objet à l’objet InvariantCulture DateTime.ToString(String, IFormatProvider) ou DateTimeOffset.ToString(IFormatProvider) la méthode pour créer la chaîne, et vous pouvez transmettre l’objet InvariantCulture à la DateTime.Parse(String, IFormatProvider) ou DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) la méthode pour convertir la chaîne en valeur de date et d’heure. 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 différentes cultures.

L’exemple suivant utilise la culture indifférente pour conserver une DateTime valeur en tant que chaîne. Il analyse ensuite la chaîne et affiche sa valeur à l’aide des conventions de mise en forme des cultures Français (France) et Allemande (Allemagne).

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é

Si vous effectuez une décision de sécurité (par exemple, si vous autorisez l’accès à une ressource système) en fonction du résultat d’une comparaison de chaînes ou d’une modification de cas, vous ne devez pas utiliser la culture indifférente. Au lieu de cela, vous devez effectuer une comparaison ordinale respectant la casse ou ne respectant pas la casse en appelant une méthode qui inclut un StringComparison paramètre et en fournissant l’un StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase l’autre des arguments. Le code qui effectue des opérations de chaîne sensibles à la culture peut provoquer des vulnérabilités de sécurité si la culture actuelle est modifiée ou si la culture sur l’ordinateur exécutant le code diffère de la culture utilisée pour tester le code. En revanche, une comparaison ordinale dépend uniquement de la valeur binaire des caractères comparés.

S’applique à

Voir aussi