Rumah >pembangunan bahagian belakang >C++ >`x is null` vs. `x == null` dalam C#: Bilakah Anda Harus Menggunakan Yang Mana?
x is null vs x == null
Dalam C#, membandingkan objek dengan null menggunakan == dan secara tradisinya adalah serupa. Walau bagaimanapun, C# 7 memperkenalkan pengendali baharu, adalah batal, yang menimbulkan persoalan: adakah terdapat kelebihan menggunakan ini berbanding == null konvensional?
Semantik
Bertentangan dengan kepercayaan popular, semantik x == null dan x adalah null tidak sama. Walaupun kedua-duanya membandingkan objek dengan nol, kelakuan mereka berbeza apabila membandingkan dengan pemalar selain null.
Kelebihan is null
Satu kelebihan is null ialah keupayaannya untuk mempertimbangkan jenis objek semasa perbandingan. Contohnya:
Test(1); void Test(object o) { if (o is 1) Console.WriteLine("a"); else Console.WriteLine("b"); }
Dalam contoh ini, operator is membenarkan perbandingan o kepada pemalar 1, dengan mengambil kira jenis masing-masing.
Bila Penggunaan adalah batal
Biasanya, x adalah nol adalah tercih edilir apabila berurusan dengan pemalar selain daripada null, terutamanya apabila mempertimbangkan jenis. Untuk perbandingan yang melibatkan hanya null, kedua-duanya == null dan null mempunyai tujuan yang sama.
Bila Penggunaan == null
== null kekal sebagai pilihan yang boleh dipercayai untuk perbandingan yang melibatkan null. Apabila tidak ada keperluan untuk mempertimbangkan jenis objek, == null biasanya digunakan.
Kemas kini
Pengkompil Roslyn telah diubah suai untuk menyelaraskan tingkah laku == dan adalah batal dalam senario di mana tiada pengendali kesaksamaan yang terbeban. Akibatnya, kedua-duanya kini mengoptimumkan kepada tingkah laku == yang lebih cekap. Walau bagaimanapun, jika pengendali kesaksamaan yang berlebihan terdapat, tingkah laku adalah nol dan == null berbeza.
Atas ialah kandungan terperinci `x is null` vs. `x == null` dalam C#: Bilakah Anda Harus Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!