C# “??” 運算子

以往為了判斷某個原件是不是null時,會用底下兩種寫法來處理

CCar a = null;
CCar b = null;

//方法1
if (a != null)
{
    b = a;
}
else
{
    b = new CCar();
}

//方法2
b = a != null ? a : new CCar();

後來不經意看到第三種寫法,比第二種更省一點
不過只能針對 null 的判斷

CCar a = null;
CCar b = null;

//方法3
b = a ?? new CCar(); //如果a!=null回傳a,不然就new CCar

不過實際來說我比較常用的情況可能是這樣
這種 “??” 運算子可能就沒辦法使用

CProject cProject = null;

//這種寫法會出現 exception
string clientName = cProject.ClientName ?? "";

//還是只能使用這種寫法
string clientName = cProject != null ? cProject.ClientName : "Brian";

發佈留言