Me pregunto por qué en C#(objeto) == 0 (objeto) 0
0 == 0 // return true
(object) 0 == (object) 0 // return false
A mí parece que compara la referencia en lugar de comparar el valor del reparto.
Esto vino a mí porque con Reflection obtengo el valor predeterminado de ValueType que devuelve un objeto y cuando lo comparo con el valor actual de mi objeto devuelve que ambos no son iguales, pero tienen el mismo valor.
El uso de Equals o ToString funciona en un objeto ValueType pero no con ReferenceType que puede ser nulo y, por lo tanto, no permite el uso de Igual o ToString.
Si alguien me puede decir cómo puedo comparar diferentes objetos que pueden ser de cualquier tipo, nulos o con un valor dado que el objeto == parece ser el camino equivocado. Me veo obligado a volver a estructurar mis objetos en su tipo original; en este caso, ¿el ReferenceType siempre será diferente?
http://msdn.microsoft.com/en-us/library/yz2be5wk(VS.71).aspx (referencia de boxeo) – meandmycode