cuando lanzo int y float a objeto y los comparo, la igualdad siempre es falsa. ¿Por qué?¿Por qué los iguales no funcionan igual cuando los elementos se lanzan al objeto?
float f = 0.0f;
int i = 0;
Console.WriteLine(f.Equals(i)); // true
Console.WriteLine(i.Equals(f)); // false
Console.WriteLine(i == f); // true
Console.WriteLine("----------------");
object obf = f;
object obi = i;
Console.WriteLine(obf.Equals(obi)); // false
Console.WriteLine(obi.Equals(obf)); // false
Console.WriteLine(obi == obf); // false
Console.WriteLine("----------------");
Actualización: este no es el caso para el mismo tipo
int i1 = 1;
int i2 = 1;
object oi1 = i1;
object oi2 = i2;
Console.WriteLine(oi1.Equals(oi2)); // true
Console.WriteLine(oi2.Equals(oi1)); // true
¿se maneja la conversión implícita en tiempo de compilación? –
@CharlesLambert: Sí. Echa un vistazo a la IL y verás que se realiza. –