1. 程式人生 > >可空型別 int?及?相關運算子

可空型別 int?及?相關運算子

int?可空型別

值型別不能為null,所以出現了int?為可空型別,此時可以為Null

int與int?不能直接進行運算,必須用顯示轉換或者int?.value才可以進行運算

int? op1 = 5;
int op2 = 6;
//op1不能為null,否則會報錯
int op3 = (int)op1 + op2; 
int op4 = op1.value+op2;

當進行乘法運算時

int? op1 = null;
int? op2 = 10;
//對於除bool?外所有的簡單可空型別,下述結果為null,意義為不能計算
int? op3 = op1*op2; 

??空接和運算子

選取第一個不是Null的值

int? op1 = null;
int result = op1*2 ?? 5;
//op1位null,所以結果為5

三元運算

如果?前bool型別為true,則返回第一個值,若為false,則返回第二個值

int? a =null;
int? b = 10;
//此時為false,所以值為b
b==null ? a : b 

?.運算子

double[] a = null;
int? count = a.Count(); //此時會報錯,因為a為null

為了解決上述問題,採用?.運算子即可使返回值為null

double[] a = null;
//採用?.運算子,即可使得count值為null且不會報錯
int? count = a?.Count();