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
aAnda mendapatkan tinju dan membuat sebuah kotak yang berisi true. Ketika Anda menetapkan untuk bAnda dapatkan kotak lain juga mengandung true. Ketika Anda membandingkan adan 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 iftidak akan berjalan. Untuk memahami ini lebih baik, cobalah untuk mengubah penugasan buntuk ini: object b = a;Sekarang Anda hanya memiliki satu kotak.
a.Equals(b)?