[C#] ??雙問號的意思及用法
int? x = null; int y = x ?? -1;
上面二行中,第一行是將x變數放入null,為什麼int能放null,可以參考另一篇文章http://charleslin74.pixnet.net/blog/post/444588266-%5BC#%5D%20%E8%AE%8A%E6%95%B8%E5%9E%8B%E6%85%8B%E5%BE%8C%E5%8A%A0%E5%95%8F%E8%99%9F%E7%9A%84%E6%84%8F%E6%80%9D
第二行就用到了雙問號,它的意思是先判斷x是不是null,如果是null就用-1來代替null給y,如果不是null就以x的值來給y
int i = GetNullableInt() ?? default(int);
上面這一行是要給i值,基本上i的值是由GetNullableInt()運行後結果所產生,但有例外,如果運行後的結果是null,就以int的預設值0,來賦值給i
string s = GetStringValue(); Console.WriteLine(s ?? "Unspecified");
而上面這二行表示s是由GetStringValue()運行後產生,第二行會印出s,但如果s是null就改印Unspecified.
其實擴展開來的意思如下
int? x = null;
int y;
if(x != null)
{
y = x.value;
}
else
{
y = -1;
}