Saya memiliki dua objek di C # dan tidak tahu apakah itu Boolean atau tipe lainnya. Namun ketika saya mencoba membandingkan C # gagal memberikan jawaban yang benar. Saya telah mencoba kode yang sama dengan VB.NET dan berhasil!
Adakah yang bisa memberitahu saya cara memperbaikinya jika ada solusi?
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
Anda mendapatkan tinju dan membuat sebuah kotak yang berisi true
. Ketika Anda menetapkan untuk b
Anda dapatkan kotak lain juga mengandung true
. Ketika Anda membandingkan a
dan b
, karena keduanya bertipe waktu kompilasi object
, Anda memanggil kelebihan yang operator ==(object, object)
ditentukan oleh Spesifikasi Bahasa C #. Kelebihan ini memeriksa untuk melihat apakah referensi pergi ke objek yang sama. Karena Anda memiliki dua kotak, hasilnya adalah false
, dan pernyataan "di bawah" Anda if
tidak akan berjalan. Untuk memahami ini lebih baik, cobalah untuk mengubah penugasan b
untuk ini: object b = a;
Sekarang Anda hanya memiliki satu kotak.
a.Equals(b)
?