Ho due oggetti in C # e non so se è booleano o qualsiasi altro tipo. Tuttavia, quando provo a confrontare quei C # non riesce a dare la risposta giusta. Ho provato lo stesso codice con VB.NET e lo ha fatto!
Qualcuno può dirmi come risolvere questo problema se esiste una soluzione?
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
aottieni boxe e crea una scatola contenente true. Quando ti assegni bottieni un'altra casella contenente anche true. Quando si confronta ae b, poiché entrambi sono di tipo tempo di compilazione object, si chiama il sovraccarico operator ==(object, object)definito dalla specifica del linguaggio C #. Questo sovraccarico controlla se i riferimenti vanno allo stesso oggetto. Poiché hai due caselle, il risultato è falsee la frase "sotto" ifnon verrà eseguita. Per capirlo meglio, prova a cambiare il compito bin questo: object b = a;ora hai solo una casella.
a.Equals(b)?