Rumah >pembangunan bahagian belakang >C++ >Bolehkah Jenis Nilai dalam C# Dibandingkan dengan Null, dan Jika Ya, Bagaimana?
Jenis nilai C# dan perbandingan nol
Dalam C#, jenis nilai tidak boleh diberikan kepada null. Ini kerana jenis nilai disimpan pada tindanan, dan tindanan tidak membenarkan rujukan nol. Walau bagaimanapun, jenis nilai boleh dibandingkan dengan null menggunakan operator kesamaan (==) atau operator ketaksamaan (!=).
Pertimbangkan kod berikut:
<code class="language-csharp">int x = 1; if (x == null) { Console.WriteLine("What the?"); }</code>
Kod ini tidak akan membuang ralat masa kompilasi, walaupun nilai int tidak boleh batal. Ini kerana pengendali kesamarataan dibebankan untuk membolehkan jenis nilai dibandingkan dengan jenis nilai boleh batal. Jenis nilai nullable ialah pembalut yang boleh mengandungi nilai jenis asas atau null.
Dalam kes ini, nilai int x ditukar secara tersirat kepada int nullable dan kemudian dibandingkan dengan literal null. Perbandingan sentiasa palsu, jadi mesej "What the?"
Walau bagaimanapun, jika anda cuba memberikan nilai nol kepada jenis nilai, anda mendapat ralat masa kompilasi:
<code class="language-csharp">int x = null; // Error CS0037: Cannot convert null to 'int' because it is a non-nullable value type</code>
Ini kerana tiada penukaran tersirat daripada jenis nilai nol kepada tidak boleh batal.
Ringkasnya, jenis nilai boleh dibandingkan dengan null menggunakan pengendali kesamaan atau ketidaksamaan. Walau bagaimanapun, nilai nol tidak boleh diberikan kepada mereka. Tingkah laku ini membolehkan fleksibiliti dalam pengekodan sambil mengekalkan integriti jenis nilai.
Atas ialah kandungan terperinci Bolehkah Jenis Nilai dalam C# Dibandingkan dengan Null, dan Jika Ya, Bagaimana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!