c# jenis nullable dan pengendali ternary: Menyelesaikan jenis ketidakkonsistenan
di C#, menggunakan pengendali ternary () boleh membawa kepada kesilapan "jenis ekspresi bersyarat tidak dapat ditentukan ...". Ini berlaku apabila cawangan sebenar dan palsu pengendali ternary mempunyai jenis yang tidak serasi. Sebagai contoh, ? :
gagal kerana int?
adalah GetBoolValue() ? 10 : null
dan 10
mewakili ketiadaan nilai. Pengkompil tidak dapat memutuskan satu jenis untuk ekspresi. int
null
Masalahnya berpunca daripada keperluan pengendali ternary untuk jenis pulangan yang konsisten. Walaupun
tidak dapat secara tersirat menjadi null
. int?
int
Berikut adalah beberapa cara untuk membetulkannya: int?
:
int?
<code class="language-csharp">x = GetBoolValue() ? (int?)10 : null;</code>
to :
null
int?
<code class="language-csharp">x = GetBoolValue() ? 10 : (int?)null;</code>
Kata kunci menyediakan cara yang selamat untuk mendapatkan nilai lalai untuk jenis, iaitu default
untuk jenis nullable:
default
null
<code class="language-csharp">x = GetBoolValue() ? 10 : default(int?);</code>
Atas ialah kandungan terperinci Kenapa operator C# ternary saya gagal dengan jenis yang boleh dibatalkan: `getBoolValue ()? 10: Null`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!