c#6.0新增的特性 null條件運算子 ?.
之前我們在需要判斷某個物件是否為空的是這樣的
person per = null如果我們不這樣判斷的話,那麼你就會得到乙個 system.nullreferenceexception;
if (per != null
)
錯誤,
當然你也可以使用三元運算子
string str=person == null ? null :person.name
但是在c#6.0的時候推出 null條件運算子,這樣就使我們少寫了很多**,增加了我們很多的工作效率
?. null條件運算子
person per = null如果我們這樣寫的話,同樣也可以判斷是否為空,代替了if的判斷和簡化了三元運算子的操作;
string name = per?.name;
例子:我們嘗試一下,在乙個集合中
listperson = new list()我們需要查詢姓是李的人,如果我們不使用null條件運算子,結果是..,new person,
new person,
new person,
};
不出意料,因為name中存在null值,所以得到了乙個system.nullreferenceexception
這次我們加上null條件運算子,結果...
加上null條件運算子之後,返回型別發生了改變,變成了nullable,如果我們還需要原來的型別,只需要和空運算子一起使用就可以了
因為返回的是bool型別,那我們看一下false返回的是什麼
就會返回符合條件的值
如果為true又會返回什麼呢
我們可以清晰的可以看到,為true的時候,不僅返回符合條件的資料,同時也返回了name為空的值
?[
null運算子不但可以使用?.訪問物件的屬性和方法,還可以使用?[監測陣列或包含索引器的物件是否為空
int are = newnull條件運算子返回的型別是nullable,我們不想要這樣的型別的話需要配合 ?? 空運算子使用int[5] ;
int? value = are?.length;
int? result = are?[0];
?? 空運算子
int are = newint[5] ;
int value = are?.length??0
;
int result = are?[0]??0;
條件運算子
條件運算子 c提供條件表示式 conditional expression 作為表達if else語句的便捷方式,該表示式使用?條件運算子。該運算子分為兩個部分,需要三個運算物件。所以是三元運算子,也是c唯一的三元運算子 下面的 得到乙個數的絕對值 x y 0 y y 在 和 之間的內容就是條件表示...
條件運算子和逗號運算子
條件運算子 表示式1 表示式2 表示式3 運算規劃 如果表示式1為真,返回表示式2的結果,否則返回表示式3的結果 例如 a 1,b 2 a b a b 返回值為2 注意表示式是右結合的.例 a 1,b 2,c 3 a b a b?c b 相當於 a b a b?c b 返回值為3 逗號運算子 多個表...
C 條件運算子
語法 condition first expression r second expression r 說明 當 condition 為 true 時,返回 first expression r,否則返回 second expression r。有些參考書上說 等價於如下語句 if conditio...