remarks example cref c# .net string .net-4.0 string-comparison

example - remarks c#



Opciones de EnumeraciĆ³n de StringComparison (2)

Consulte http://blogs.msdn.com/b/abhinaba/archive/2005/10/28/486173.aspx y http://msdn.microsoft.com/en-us/library/ms973919 . La recomendación es usar métodos ordinales *.

Estoy confundido por las opciones de la enumeración StringComparison . Solo quiero comparar dos cuerdas que ignoran la caja. ¿Puede alguien explicar qué significan los términos cultura actual , cultura invariable y ordinal ? ¿Existe una opción común para la mayoría de los casos de uso y, de ser así, bajo qué circunstancias se necesitarían las otras opciones?

Como referencia, las opciones de la enumeración StringComparison son las siguientes:

  • CurrentCulture
  • CurrentCultureIgnoreCase
  • InvariantCulture
  • InvariantCultureIgnoreCase
  • Ordinal
  • OrdinalIgnoreCase

Si está comparando dos cadenas para la igualdad, la configuración cultural no hace mucha diferencia (aunque afecta, por ejemplo, a la turca, que tiene punteadas e indizadas).

Si está ordenando una lista de cadenas, hay una gran diferencia; las diferentes culturas a menudo clasifican en diferentes órdenes.

CurrentCulture clasifica cadenas de acuerdo con, erm, la cultura actual (es decir, la configuración regional actual). Entonces esto cambia dependiendo de dónde se ejecuta su software.

InvariantCulture es básicamente configuración de inglés de EE. UU. Es invariable porque es igual donde sea que se ejecute su software.

Las comparaciones ordinales se basan en los valores de los puntos de código Unicode. Esta suele ser la mejor opción para comparar la igualdad, pero no es una buena opción si está ordenando una lista de cadenas para mostrar al usuario.