早期版本的c#更新介紹了可為 null 的型別和 null 合併運算子的概念,??在處理可以為 null 值的值時減少樣本**量。 c#6將繼續此主題,其中包含 「null 條件運算子」?.。 當在表示式的右側的物件上使用時,如果物件不 null,則為 null 條件運算子將返回成員值,否則 null:
var ss =
newstring
;var length0 = ss [0]
?.length;
// 3
var length1 = ss [1]
?.length;
// null
var lengths = ss.select (s =
> s?
.length ??0
);//[3, 0]
(length0 和 length1 都推斷為型別 int?)
上一示例中的最後一行顯示了 ? 的 null 條件運算子與 ?? null 合併運算子的組合。 新c#的 6 null 條件運算子返回陣列中第2個元素上的null,此時,空合併運算子將在中啟動,並向lengths的陣列提供0(當然,這是特定於問題的)。
對於許多應用程式而言,null 條件運算子應在很大程度上減少不必要的樣本的空檢查量。
由於歧義,對 null 條件運算子有一些限制。 你不能立即使用帶括號的引數列表的 ?,因為你可能希望使用委託:
somedelegate?
("some argument"
)// not allowed
不過,invoke 可用於將 ? 與自變數列表分開,並且仍是對 null檢查樣本塊的標記改進:
public
event
eventhandler handoffoccurred;
public
override
bool continueuseractivity (
nsuseractivity useractivity,
摘自 C (6) 運算子過載 一
運算子過載的概念 操作符過載的一般規則 運算子過載方法 運算子過載有兩個方法 乙個是利用全域性函式進行運算子過載 另一種是利用成員函式進行運算子過載。利用成員函式 為什麼要進行運算子過載?我們知道,資料型別開闢了記憶體用於存放變數和提供了基於變數值的運算。類定義了物件,提供了一種新的資料儲存方法。所...
C 6 3 null 條件運算子
c 6 新增特性目錄 1 namespace csharp626 78internal class program919 20 21 在我們使用乙個物件的屬性的時候,有時候第一步需要做的事情是先判斷這個物件本身是不是bull,不然的話你可能會得到乙個 system.nullreferenceexce...
C 條件運算子
語法 condition first expression r second expression r 說明 當 condition 為 true 時,返回 first expression r,否則返回 second expression r。有些參考書上說 等價於如下語句 if conditio...