Pertimbangkan serpihan kod berikut:
int? x = GetBoolValue() ? 10 : null;
pulangan GetBoolValue()
, nilai 10 diberikan kepada integer kosong true
; Walau bagaimanapun, pengkompil akan menandakan ralat: x
x
null
<解> Tafsiran Soalan
<code>错误:无法确定条件表达式的类型,因为在 int 和 <null> 之间没有隐式转换。</code>
Ralat ini menyoroti masalah jenis bukan penampakan dalam ungkapan tiga -yuan. Ekspresi kiri <返> mengembalikan nilai , dan parsing adalah atau
. Ekspresi yang betul cuba menggabungkan dua ungkapan:
GetBoolValue()
bool
<这>, ini adalah true
volume literal (tidak false
).
10
int
pengkompil pertama cuba menilai ekspresi yang betul. Ia bertemu <面> literal int?
dan aksara kosong null
int
Untuk menyelesaikan masalah ini, ungkapan yang betul perlu bersesuaian dengan jenis jenis kosong. Terdapat beberapa cara: <:>
10
null
int
<字> ditukar secara harfiah ke null
:
<空> Gunakan jenis kosong atau nilai lalai:
int?
<式> penukaran tersirat
x = GetBoolValue() ? (int?)10 : null;
<<> to :
Jenis kosongx = GetBoolValue() ? 10 : (int?)null; x = GetBoolValue() ? 10 : default(int?);
to :
non -emptyboleh ditukar kepada kosong
.int?
. null
Atas ialah kandungan terperinci Kenapa '? 10: NULL' gagal dengan jenis yang tidak dapat dibatalkan di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!