¿Qué diferencia existe entre ToUpper () y ToUpperInvariant ()?, en C#

publicado por: Anonymous

Supongamos esto:

string texto = "Texto a convertir en mayúscula.";

MessageBox.Show("Texto con ToUpper: " + texto.ToUpper() +
                "nTexto con ToUpperInvariant: " + texto.ToUpperInvariant(),
                "Mensaje en Mayúscula", MessageBoxButtons.OK, MessageBoxIcon.Information);

El resultado es el mismo:

  • con ToUpper() : “TEXTO A CONVERTIR EN MAYÚSCULA.”

  • con ToUpperInvariant() : “TEXTO A CONVERTIR EN MAYÚSCULA.”

Editado:

Según la descripción del ToUpperInvariant : Aplica las reglas de mayúsculas y minúsculas de la referencia cultural de todos los idiomas.

¿Cuál es la diferencia, algún EJEMPLO donde los resultados pueden ser diferentes?

solución

  • ToUpper(): Toma en cuenta las reglas de la cultura por defecto de tu sistema para determinar como convertir una cadena a mayúsculas.
  • ToUpperInvariant(): Usa lo que se podría llamar una cultura neutra para determinar las reglas para convertir una cadena a mayúsculas.

En la práctica, para la gran mayoría de las letras que usamos comúnmente en inglés o español, en realidad no hay diferencia entre los 2 métodos.

Pero en teoría, si trabajaramos en un sistema con una cultura bien peculiar y con caracteres más especiales, entonces podrías notar diferencias.

Por ejemplo, adaptando el ejemplo sacado de esta respuesta de SO, podemos ver que si estuvieramos trabajando en un sitio donde la cultura por defecto es la turca, entonces veríamos una diferencia en cómo se convierte la i a mayúscula:

 string letra = "i";
 var turkeyCulture = new CultureInfo("tr-TR");
 Console.WriteLine(string.Format("{0} ({1})", letra.ToUpperInvariant(), (int)letra.ToUpperInvariant()[0]));
 Console.WriteLine(string.Format("{0} ({1})", letra.ToUpper(turkeyCulture), (int)letra.ToUpper(turkeyCulture)[0]));

Demo

Resultado:

I (73)
Ä° (304)

De modo que es normalmente preferible usar ToUpperInvariant() para garantizar resultados estables, a menos que tengamos una necesidad especial de tomar en cuenta las reglas de una cierta cultura.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *