C 6中NULL條件運算子

2021-10-01 13:31:00 字數 1035 閱讀 2169

早期版本的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...