simbol pengkomputeran ternary dan jenis kosong dalam C#: Had Butiran
Apabila memproses jenis nilai kosong, simbol pengkomputeran ternary (? :) Mungkin mempunyai tingkah laku yang tidak dijangka. Masalah biasa ialah cuba menggunakan simbol pengkomputeran ternary untuk menetapkan watak integer atau batal kepada pemboleh ubah integer kanal.
Sebagai contoh, pertimbangkan kod berikut:
Dalam kod ini, simbol pengkomputeran ternary cuba mengira ungkapan yang betul:
<code class="language-csharp">int? x = GetBoolValue() ? 10 : null;</code>
di antara mereka, kembali ke nilai boolean, 10 adalah integer literal, null adalah rujukan kosong. Pengkompil cuba untuk menukar nilai -nilai ini untuk memadankan jenis ekspresi kiri, iaitu,
<code class="language-csharp">GetBoolValue() ? 10 : null</code>
Walau bagaimanapun, tidak ada penukaran tersembunyi antara jumlah literal (tidak boleh kosong) dan integer kosong (GetBoolValue()
int?
int?
<code>无法确定条件表达式的类型,因为整型和<null>之间没有隐式转换。</code>
Atas ialah kandungan terperinci Kenapa pengendali ternary gagal dengan jenis yang boleh dibatalkan di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!