C # iki nesne var ve Boolean veya başka bir tür olup olmadığını bilmiyorum. Ancak bu C # karşılaştırmaya çalıştığınızda doğru cevap vermek başarısız olur. VB.NET ile aynı kodu denedim ve o yaptı!
Bir çözüm varsa kimse bunu nasıl düzeltebilir?
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
aboks olsun ve içeren bir kutu oluşturun true. Size atadığınızda da içeren başka bir kutu bolsun . Karşılaştırdığınızda ve her ikisi de derleme zamanı türünde olduğundan , C # Dil Belirtimi tarafından tanımlanan aşırı yükü çağırırsınız . Bu aşırı yük, referansların aynı nesneye gidip gitmediğini kontrol eder. Eğer sahip olduğundan iki kutu, sonucudur , ve "altındaki" ifadesi irade değil çalıştırın. Bunu daha iyi anlamak için, bunun atamasını değiştirmeyi deneyin : Artık sadece bir kutunuz var. trueabobjectoperator ==(object, object)falseifbobject b = a;
a.Equals(b)?