Rumah >pembangunan bahagian belakang >C++ >Mengapa C# Membenarkan Perbandingan Jenis Nilai kepada Null?
Memahami Perbandingan Null C# dengan Jenis Nilai
Elaun C# untuk perbandingan nol dengan jenis nilai, walaupun kelihatan berlawanan dengan intuisi, berpunca daripada resolusi sarat pengendali pintar pengkompil. Pengkompil memilih pengendali lebihan beban yang paling sesuai berdasarkan konteks.
Pertimbangkan contoh ini:
<code class="language-C#">Int32 x = 1; if (x == null) { Console.WriteLine("What the?"); }</code>
Pengkompil mentafsir ini sebagai perbandingan menggunakan pengendali ==
terbeban yang direka untuk integer boleh null (int?
). Pembolehubah Int32
x
ditukar secara tersirat kepada integer nullable, dan literal null
juga dianggap sebagai integer nullable. Oleh itu, perbandingan adalah sah, walaupun ia sentiasa menilai kepada false
.
Prinsip yang sama digunakan apabila membandingkan jenis nilai dengan literal jenis yang berbeza:
<code class="language-C#">if (x == 12.6)</code>
Di sini, pengkompil menggunakan pengendali ==
yang terlebih beban untuk double
dan double?
. x
ditukar kepada double
dan 12.6
literal juga ialah double
. Sekali lagi, perbandingan adalah sah dan akan menghasilkan false
.
Fleksibiliti dalam pemuatan berlebihan pengendali ini meningkatkan ketepatan dan kebolehbacaan kod. Walau bagaimanapun, pengaturcara mesti mengambil kira kemungkinan tingkah laku yang tidak dijangka dan menggunakan perbandingan ini dengan berhati-hati.
Atas ialah kandungan terperinci Mengapa C# Membenarkan Perbandingan Jenis Nilai kepada Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!