Tengo dos objetos en C # y no sé si es booleano o de cualquier otro tipo. Sin embargo, cuando trato de comparar esos C # no puede dar la respuesta correcta. He intentado el mismo código con VB.NET y ¡lo hice!
¿Alguien puede decirme cómo solucionar esto si hay una solución?
C#:
object a = true;
object b = true;
object c = false;
if (a == b) c = true;
MessageBox.Show(c.ToString()); //Outputs False !!
VB.NET:
Dim a As Object = True
Dim b As Object = True
Dim c As Object = False
If (a = b) Then c = True
MessageBox.Show(c.ToString()) '// Outputs True
a, obtiene boxeo y crea un cuadro que contiene true. Cuando lo asigna b, obtiene otro cuadro que también contiene true. Cuando compara ay b, dado que ambos son del tipo de tiempo de compilación object, llama a la sobrecarga operator ==(object, object)definida por la Especificación del lenguaje C #. Esta sobrecarga verifica si las referencias van al mismo objeto. Como tiene dos cuadros, el resultado es false, y la declaración "debajo" ifno se ejecutará. Para comprender esto mejor, intente cambiar la asignación de ba esto: object b = a;ahora solo tiene una casilla.
a.Equals(b)?