2011-04-26 13 views

Respuesta

15

string == string es exactamente lo mismo que String.Equals. Este es el código exacto (del Reflector):

public static bool operator ==(string a, string b) 
{ 
    return Equals(a, b); // Is String.Equals as this method is inside String 
} 
+0

Entonces, ¿puedo decir que == es menos rendimiento que iguales? – Caipivara

+2

@Daniel G. R.No, los métodos pequeños serán incorporados por el compilador just-in-time así que no te preocupes por eso :) Y si hay un MUY pequeño incremento de tiempo en la compilación de JIT, no debes preocuparte por eso;) –

1

El operador == llama al método String.Equals. Entonces, en el mejor de los casos, estás guardando una llamada a un método. código descompilada:

public static bool operator ==(string a, string b) 
{ 
    return string.Equals(a, b); 
} 
3

En C# no hay diferencia ya que el operador == y != se han sobrecargado de tipo de cadena para llamar equals(). Vea esto MSDN page.

0

no hay diferencia, es solo una sobrecarga del operador. para cuerdas es internamente lo mismo. , sin embargo, no desea tener el hábito de usar == para comparar objetos y es por eso que no se recomienda usarlo también para cadenas.

0

En C# no hay diferencia para las cadenas.

0

Si no se preocupan por el caso de la cadena y no se preocupa de awarenes culturales, entonces es lo mismo ...

1

Look here para una mejor descripción. Como una respuesta indicó

== Cuando se utiliza en un tipo de objeto, que va a resolver a System.Object.ReferenceEquals.

iguales es sólo un método virtual y se comporta como tal, por lo que la versión se reemplaza se utilizará (que, por tipo de cadena compara el contenido).

3

== en realidad termina ejecutando String.Equals en Strings.

Usted puede especificar un StringComparision cuando se utiliza String.Equals ....

Ejemplo:

MyString.Equals("TestString", StringComparison.InvariantCultureIgnoreCase) 

Sobre todo, considero que es una preferencia de codificación. Use lo que prefiera.