CultureInfo.InvariantCulture Propiedad

Definición

Obtiene el objeto CultureInfo que es independiente de la referencia cultural (invariable).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

Valor de propiedad

Objeto que es independiente de la referencia cultural (invariable).The object that is culture-independent (invariant).

Comentarios

La referencia cultural de todos los idiomas no tiene en cuenta la referencia cultural; está asociado con el idioma inglés, pero no con ningún país o región.The invariant culture is culture-insensitive; it is associated with the English language but not with any country/region. La referencia cultural de todos los idiomas se especifica mediante el uso de una cadena vacía ("") en la llamada a un método de creación de instancias de CultureInfo.You specify the invariant culture by name by using an empty string ("") in the call to a CultureInfo instantiation method. CultureInfo.InvariantCulture también recupera una instancia de la referencia cultural de todos los idiomas.CultureInfo.InvariantCulture also retrieves an instance of the invariant culture. Se puede usar en casi cualquier método del espacio de nombres System.Globalization que requiera una referencia cultural.It can be used in almost any method in the System.Globalization namespace that requires a culture. Los objetos devueltos por propiedades como CompareInfo, DateTimeFormaty NumberFormat también reflejan la comparación de cadenas y las convenciones de formato de la referencia cultural de todos los idiomas.The objects returned by properties such as CompareInfo, DateTimeFormat, and NumberFormat also reflect the string comparison and formatting conventions of the invariant culture.

A diferencia de los datos que tienen en cuenta la referencia cultural, que está sujeto a cambios en la personalización del usuario o mediante actualizaciones en el .NET Framework o el sistema operativo, los datos de la referencia cultural invariable son estables a lo largo del tiempo y a través de las referencias culturales instaladas y los usuarios no pueden personalizarlos.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. Esto hace que la referencia cultural de todos los idiomas sea especialmente útil para las operaciones que requieren resultados independientes de la referencia cultural, como operaciones de formato y análisis que conservan datos con formato, u operaciones de ordenación y ordenación que requieren que los datos se muestren en un orden fijo independientemente de la referencia cultural.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.

Operaciones de cadenaString Operations

Puede usar la referencia cultural de todos los idiomas para las operaciones de cadenas que tienen en cuenta la referencia cultural y que no se ven afectadas por las convenciones de la referencia cultural del subproceso actual y que son coherentes en todas las referencias culturales.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. Por ejemplo, puede que desee que los datos ordenados aparezcan en un orden fijo o apliquen un conjunto estándar de convenciones de mayúsculas y minúsculas a las cadenas independientemente de la referencia cultural del subproceso actual.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. Para ello, pase el objeto InvariantCulture a un método que tenga un parámetro CultureInfo, como Compare(String, String, Boolean, CultureInfo) y 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).

Persistencia de datosPersisting Data

La propiedad InvariantCulture se puede utilizar para conservar los datos en un formato independiente de la referencia cultural.The InvariantCulture property can be used to persist data in a culture-independent format. Esto proporciona un formato conocido que no cambia y que se puede usar para serializar y deserializar datos entre referencias culturales.This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. Después de deserializar los datos, se puede dar formato a ellos de forma adecuada según las convenciones culturales del usuario actual.After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.

Por ejemplo, si decide conservar los datos de fecha y hora en formato de cadena, puede pasar el objeto InvariantCulture al método DateTime.ToString(String, IFormatProvider) o DateTimeOffset.ToString(IFormatProvider) para crear la cadena y puede pasar el objeto InvariantCulture al método DateTime.Parse(String, IFormatProvider) o DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) para volver a convertir la cadena en un valor de fecha y hora.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. Esta técnica garantiza que los valores de fecha y hora subyacentes no cambian cuando los usuarios leen o escriben los datos de diferentes referencias culturales.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.

En el ejemplo siguiente se usa la referencia cultural de todos los idiomas para conservar un valor de DateTime como una cadena.The following example uses the invariant culture to persist a DateTime value as a string. A continuación, analiza la cadena y muestra su valor mediante las convenciones de formato de las referencias culturales de francés (Francia) y alemán (Alemania).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

Decisiones de seguridadSecurity Decisions

Si va a tomar una decisión de seguridad (por ejemplo, si desea permitir el acceso a un recurso del sistema) en función del resultado de una comparación de cadenas o de un cambio de mayúsculas y minúsculas, no debe utilizar la referencia cultural de todos los idiomas.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. En su lugar, debe realizar una comparación ordinal con distinción de mayúsculas y minúsculas o sin distinción de mayúsculas y minúsculas llamando a un método que incluye un parámetro StringComparison y proporcionando StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase como argumento.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. El código que realiza operaciones de cadena que tienen en cuenta la referencia cultural puede producir vulnerabilidades de seguridad si se cambia la referencia cultural actual o si la referencia cultural del equipo que ejecuta el código difiere de la referencia cultural que se usa para probar el código.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 cambio, una comparación ordinal depende únicamente del valor binario de los caracteres comparados.In contrast, an ordinal comparison depends solely on the binary value of the compared characters.

Se aplica a

Consulte también: