Curiosidades de csharp equals no siempre es lo mismo que ==

| | Comentarios (0)

Fijaos y escribid esto en el Visual Studio

object o1 = 5;
object o2 = 5;

System.Diagnostics.Debug.WriteLine(o1 == o2);
System.Diagnostics.Debug.WriteLine(o1.Equals(o2));
System.Diagnostics.Debug.WriteLine(((Int32) o1).CompareTo(o2));

La respuesta es:

False
True
0

¿Por qué? Pues por que el tipo Int32 (recordemos que esto se implemente usando struct lo que nos da un tipo por valor) sobreescribe el método Equals pero no el operador ==. Es decir == hace la comparación como una valirable por referencia, mientras que Equals lo hace como una variable por valor.

Así que cuidadin cuando sobreescribáis cosas, yo cuando me pongo a sobreescribir prefiero sobreescribirlo todo, por lo que pueda pasar ;)

Categorías

Escribir un comentario

Sobre esta entrada

Esta página contiene una sola entrada realizada por Víctor y publicada el 21 de Marzo 2008 7:44 PM.

Compartir ficheros en Visual Studio es la entrada anterior en este blog.

Usar shtml es la entrada siguiente en este blog.

Encontrará los contenidos recientes en la página principal. Consulte los archivos para ver todos los contenidos.

Publicidad