¿Cuál es la cultura invariante?

¿Alguien podría dar un ejemplo para demostrar el uso de la Cultura Invariante ? No entiendo lo que describe la documentación.

La cultura invariante es una cultura especial que es útil porque no cambiará. La cultura actual puede cambiar de un usuario a otro, o incluso de una carrera a otra, por lo que no puede confiar en que siga siendo el mismo.

Poder utilizar la misma cultura cada vez es muy importante en varios flujos, por ejemplo, serialización: puede tener 1,1 valor en una cultura y 1,1 en otra. Si intenta analizar el valor “1,1” en la segunda cultura, el análisis fallará. Sin embargo, puede utilizar la cultura invariable para convertir un número en una cadena y luego analizarlo desde cualquier computadora con cualquier conjunto de cultura.

// Use some non-invariant culture. CultureInfo nonInvariantCulture = new CultureInfo("en-US"); Thread.CurrentThread.CurrentCulture = nonInvariantCulture; decimal dec = 1.1m; string convertedToString = dec.ToString(); // Simulate another culture being used, // following code can run on another computer. nonInvariantCulture.NumberFormat.NumberDecimalSeparator = ","; decimal parsedDec; try { // This fails because value cannot be parsed. parsedDec = decimal.Parse(convertedToString); } catch (FormatException) { } // However you always can use Invariant culture: convertedToString = dec.ToString(CultureInfo.InvariantCulture); // This will always work because you serialized with the same culture. parsedDec = decimal.Parse(convertedToString, CultureInfo.InvariantCulture); 

Una cultura falsa basada en el inglés con un comportamiento definido. Ideal para escribir, por ejemplo, cosas en archivos de configuración para que puedan leerse y escribirse independientemente de la cultura que el usuario haya definido.

Básicamente es una cultura específica que es artificial y no cambiará .

Se usa para cosas que son iguales independientemente de la cultura (que no es necesario traducir a alguna cultura X para que sea apropiada)

como un ejemplo: https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx . Cuando escribe un archivo específico de la aplicación con el que el usuario no debería estar metiéndose, debe usar InvariantCulture para todos los métodos que incluyan un parámetro de cultivo.

Tenga en cuenta que según los documentos vinculados anteriormente:

Sin embargo, una aplicación debe usar la cultura invariante solo para procesos que requieren resultados independientes de la cultura, como formatear y analizar datos que persisten en un archivo.

La cultura invariante es insensible a la cultura; está asociado con el idioma inglés, pero no con ningún país / región. Puede usar la cultura invariante para operaciones de cadenas sensibles a la cultura que no se ven afectadas por las convenciones de la cultura de hilos actual y que son consistentes en todas las culturas.

CultureInfo.InvariantCulture recupera una instancia de la cultura invariante. Se puede usar en casi cualquier método en el espacio de nombres System.Globalization que requiere una cultura. Los objetos devueltos por propiedades como CompareInfo, DateTimeFormat y NumberFormat también reflejan la comparación de cadenas y las convenciones de formato de la cultura invariante.

A diferencia de los datos sensibles a la cultura, que están sujetos a cambios por personalización del usuario o por actualizaciones de .NET Framework o el sistema operativo, los datos de cultivo invariables son estables a lo largo del tiempo y en culturas instaladas y los usuarios no pueden personalizarlos. Esto hace que la cultura invariante sea particularmente útil para operaciones que requieren resultados independientes de la cultura, como operaciones de formateo y análisis que persisten datos formateados u operaciones de clasificación y ordenamiento que requieren que los datos se muestren en un orden fijo independientemente de la cultura.

La propiedad InvariantCulture es útil cuando desea visualizar datos persistentes en un formato independiente de cultivo .

Por ejemplo, si desea mostrar un número o fecha y hora en un formato específico independiente de la cultura actual de la aplicación, puede utilizar CultureInfo.InvariantCulture .