J'ai deux objets en C # et je ne sais pas si c'est booléen ou tout autre type. Cependant, lorsque j'essaye de comparer ces C #, je ne donne pas la bonne réponse. J'ai essayé le même code avec VB.NET et ça l'a fait!
Quelqu'un peut-il me dire comment résoudre ce problème s'il existe une solution?
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
vous obtenez la boxe et créez une boîte contenant true
. Lorsque vous attribuez à b
vous obtenez une autre boîte contenant également true
. Lorsque vous comparez a
et b
, comme les deux sont de type à la compilation object
, vous appelez la surcharge operator ==(object, object)
définie par la spécification du langage C #. Cette surcharge vérifie si les références vont au même objet. Puisque vous avez deux boîtes, le résultat est false
, et l'instruction "sous" votre if
ne fonctionnera pas. Pour mieux comprendre cela, essayez de modifier l'attribution de b
à ceci: object b = a;
Vous n'avez plus qu'une seule case.
a.Equals(b)
?