Rumah >pembangunan bahagian belakang >C++ >Bolehkah Jenis Nilai dalam C# Dibandingkan dengan Null?
Dalam C#, walaupun secara amnya dipercayai bahawa jenis nilai (seperti integer) tidak boleh nol, mereka sebenarnya boleh dibandingkan dengan nilai nol. Tingkah laku ini boleh mengelirukan pembangun, seperti yang ditunjukkan dalam coretan kod berikut:
<code class="language-csharp">Int32 x = 1; if (x == null) { Console.WriteLine("What the?"); }</code>
Kod ini bercanggah dengan jangkaan kami bahawa x tidak boleh batal, kerana null mewakili objek nilai yang tidak ditetapkan. Walau bagaimanapun, pengkompil tidak membuang ralat, yang membuat kami mempersoalkan kesahihan perbandingan ini.
Penjelasan terletak pada cara unik pengendali diselesaikan dalam C#. Dalam kes ini, pengkompil mengenal pasti dua lebihan operator == yang mungkin digunakan:
x dan null kedua-duanya boleh ditukar secara tersirat kepada integer nullable (Nullable
Tingkah laku ini konsisten dengan corak yang membolehkan jenis nilai dibandingkan dengan jenis primitif lain. Sebagai contoh, perbandingan x == 12.6 (di mana x ialah integer) juga sentiasa menghasilkan palsu kerana integer x boleh ditukar secara tersirat kepada nombor titik terapung berketepatan dua dan perbandingan adalah antara dua nombor titik terapung berketepatan dua. .
Atas ialah kandungan terperinci Bolehkah Jenis Nilai dalam C# Dibandingkan dengan Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!