[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;
            }         

posted @ 2017-04-25 16:38  FreePress  阅读(414)  评论(0编辑  收藏  举报