Laporkan ralat?
? 10 : null
Apabila menggunakan jenis yang tersedia di C#, konsistensi jenis dalam ungkapan sangat penting. Karakter pengkomputeran ternary (? :) Menilai kedua -dua ungkapan berdasarkan keadaan.
di sini, kami cuba menetapkan int dan null ke kabel int variable X. Ini boleh menyebabkan kesilapan penyusun, kerana tidak ada penukaran tersembunyi antara kedua -dua jenis ini.
<code class="language-csharp">int? x = GetBoolValue() ? 10 : null; // 错误</code>
literal 10 adalah jenis int, dan null adalah jenis kosong. Tiada penukaran tersembunyi antara kedua -dua, jadi kesilapan berlaku.
<code class="language-csharp">GetBoolValue() ? 10 : null</code>
atau, kita boleh menukar permukaan perkataan kosong ke int?:
<code class="language-csharp">int? x = GetBoolValue() ? (int?)10 : null; // 将10转换为int?</code>
atau, kita boleh menggunakan kata kunci lalai:
<code class="language-csharp">int? x = GetBoolValue() ? 10 : (int?)null; // 将null转换为int?</code>
Dengan memastikan konsistensi jenis, kita boleh mengelakkan ralat pengkompil dan mengekalkan kesempurnaan jenis.
Atas ialah kandungan terperinci Mengapa `? 10: Null` Dilarang dalam pengendali C# Ternary dengan jenis yang tidak dapat dibatalkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!