CultureInfo.InvariantCulture Propiedad

Definición

Obtiene el objeto CultureInfo que es independiente de la referencia cultural (invariable).

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

CultureInfo

Objeto que es independiente de la referencia cultural (invariable).

Comentarios

La referencia cultural invariable no tiene en cuenta la referencia cultural; está asociado al idioma inglés, pero no a ningún país o región. La referencia cultural invariable se especifica por nombre mediante una cadena vacía ("") en la llamada a un método CultureInfo de creación de instancias. CultureInfo.InvariantCulture también recupera una instancia de la referencia cultural invariable. Se puede usar en casi cualquier método del espacio de System.Globalization nombres que requiera una referencia cultural. Los objetos devueltos por propiedades como , y también reflejan las convenciones de formato y comparación de cadenas de CompareInfo DateTimeFormat la referencia cultural NumberFormat invariable.

A diferencia de los datos dependientes de la referencia cultural, que están sujetos a cambios por personalización del usuario o por actualizaciones de .NET Framework o del sistema operativo, los datos de referencia cultural invariables son estables con el tiempo y entre las referencia culturales instaladas y los usuarios no pueden personalizar. Esto hace que la referencia cultural invariable sea especialmente útil para las operaciones que requieren resultados independientes de la referencia cultural, como las operaciones de formato y análisis que conservan los datos con formato, o las operaciones de ordenación y ordenación que requieren que los datos se muestren en un orden fijo independientemente de la referencia cultural.

Operaciones de cadena

Puede usar la referencia cultural invariable para las operaciones de cadena dependientes de la referencia cultural que no se ven afectadas por las convenciones de la referencia cultural actual y que son coherentes entre las distintas referencia culturales. Por ejemplo, puede que desee que los datos ordenados aparezcan en un orden fijo o aplicar un conjunto estándar de convenciones de mayúsculas y minúsculas a las cadenas, independientemente de la referencia cultural actual. Para ello, se pasa el InvariantCulture objeto a un método que tiene un parámetro , como y CultureInfo Compare(String, String, Boolean, CultureInfo) ToUpper(CultureInfo) .

Conservar los datos

La InvariantCulture propiedad se puede usar para conservar los datos en un formato independiente de la referencia cultural. Esto proporciona un formato conocido que no cambia y que se puede usar para serializar y deserializar datos entre las distintas referencia culturales. Después de deserializar los datos, se puede formatear correctamente en función de las convenciones culturales del usuario actual.

Por ejemplo, si decide conservar los datos de fecha y hora en forma de cadena, puede pasar el objeto al método o para crear la cadena y puede pasar el objeto al método o para convertir la cadena de nuevo en un valor de fecha y InvariantCulture DateTime.ToString(String, IFormatProvider) DateTimeOffset.ToString(IFormatProvider) InvariantCulture DateTime.Parse(String, IFormatProvider) DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) hora. Esta técnica garantiza que los valores de fecha y hora subyacentes no cambien cuando los usuarios de distintas culturas leen o escriben los datos.

En el ejemplo siguiente se usa la referencia cultural invariable para conservar DateTime un valor como una cadena. A continuación, analiza la cadena y muestra su valor mediante las convenciones de formato de las culturas francés (Francia) y alemán (Alemania).

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 seguridad

Si va a tomar una decisión de seguridad (por ejemplo, si se permite el acceso a un recurso del sistema) en función del resultado de una comparación de cadenas o de un cambio de caso, no debe usar la referencia cultural invariable. En su lugar, debe realizar una comparación ordinal que distingue mayúsculas de minúsculas o que no distingue mayúsculas de minúsculas llamando a un método que incluye un parámetro y suministrando o como StringComparison StringComparison.Ordinal StringComparison.OrdinalIgnoreCase argumento. El código que realiza operaciones de cadenas que tienen en cuenta la referencia cultural puede provocar 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. Por el contrario, una comparación ordinal depende únicamente del valor binario de los caracteres comparados.

Se aplica a

Consulte también