相信很多人都看到??運算符,但是不一定每個人都知道它是用來做什麼的,之前我也看到過很多次,但是因為一直沒有去用過,所以也沒有了解他的作用,今天又看到了,所以查了的MSDN,原來??運算符叫做空接合運算符,作用是,要判斷一個對象是否為null,如果為null那麼給賦於一個默認的值,做法相當的麻煩.例如:
int? isobject = null;
if(isobject==null)
{
isobject=0;
}
每次都要進行判斷!!
當然以上舉的只不過是一個簡單的例子,有人會想,int型的本來就不會為null,因為其本身有一個默認的值為0.我在這裡要說明一下的是,這裡舉的只是一個例子而己!而且int?代表了變量isobject是可為空的!所以當我賦與一個null時,isobject並不是為0,而是為null.
每次的判斷都要用一個if語句,相當的麻煩,現在用了空接合,代碼如下:
isobject = isobject??0;
空接合運算符(??)為處理可空類型和引用類型時表示NULL值的可能性提供了一個快捷方式,這個運算符放在兩個操作數之間,第一個操作數必須是一個可空類型或引用類,第二個操作數必須與第一個操作數的類型相同,或者可以隱含地轉換為第一個操作數的類型.
空接合運算符的計算如下:
如果第一個操作數不為NULL,則整個表達式就等於每一個操作數,但如果第一個操作數為NULL,則整個表達式就是等於第二個操作數的值.例如:
int? a= null;
int b;
b= a??10; //b has the value 10
a=3;
b= a??10; //b has the value 3
如果第二個操作數不能隱含地轉換為第一個操作數的類型,就生成一個編譯錯誤.