una - string c# ejemplos
Comparaciones de cadenas C#: Diferencia entre CurrentCultureIgnoreCase e InvariantCultureIgnoreCase (2)
Las otras publicaciones me han dado buenos consejos, pero pensé que sería bueno mostrar un ejemplo de donde definitivamente hace la diferencia:
using System;
using System.Globalization;
using System.Threading;
class Test
{
static void Main()
{
CultureInfo turkish = CultureInfo.CreateSpecificCulture("tr");
Thread.CurrentThread.CurrentCulture = turkish;
// In Turkey, "i" does odd things
string lower = "i";
string upper = "I";
Console.WriteLine(lower.Equals(upper,
StringComparison.CurrentCultureIgnoreCase));
Console.WriteLine(lower.Equals(upper,
StringComparison.InvariantCultureIgnoreCase));
}
}
(No hay duda de que hay muchos otros casos, este fue solo el primero en el que pensé).
Al hacer una comparación de cadenas en C #, ¿cuál es la diferencia entre hacer una
string test = "testvalue";
test.Equals("TESTVALUE", StringComparison.CurrentCultureIgnoreCase);
y
string test = "testvalue";
test.Equals("TESTVALUE", StringComparison.InvariantCultureIgnoreCase);
... y ¿es importante incluir ese parámetro extra, de todos modos?
Microsoft proporciona una guía decente para cuándo usar la propiedad InvariantCulture
:
MSDN: propiedad CultureInfo.InvariantCulture
... una aplicación debe usar la cultura invariable solo para procesos que requieren resultados independientes de la cultura, como formatear y analizar datos que persisten en un archivo. En otros casos, produce resultados que pueden ser lingüísticamente incorrectos o culturalmente inapropiados.
Consideraciones de Seguridad
Si se tomará una decisión de seguridad en función del resultado de una comparación de cadenas o un cambio de caso, la aplicación debe usar una comparación ordinal que ignore el caso en lugar de utilizar InvariantCulture. [...]
Operaciones de cadena
Si su aplicación necesita realizar una operación de cadena sensible a la cultura que no se vea afectada por el valor de CurrentCulture, debe usar un método que acepte un parámetro CultureInfo. [...]
Datos persistentes
La propiedad InvariantCulture es útil para almacenar datos que no se mostrarán directamente a los usuarios. Almacenar datos en un formato independiente de cultivo garantiza un formato conocido que no cambia. Cuando los usuarios de diferentes culturas acceden a los datos, se pueden formatear de forma adecuada según el usuario específico. [...]