Rumah > pembangunan bahagian belakang > C++ > Mengapa C# Membenarkan Perbandingan Jenis Nilai kepada Null?

Mengapa C# Membenarkan Perbandingan Jenis Nilai kepada Null?

Susan Sarandon
Lepaskan: 2025-01-16 18:16:15
asal
988 orang telah melayarinya

Why Does C# Allow Value Type Comparisons to 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan