目前我們的代碼在C#中,如何妥善處理空校驗
var val = (returnCode as Code).Element(1).Attribute[2].Value
你可以看到,代碼獲取返回值,這是一個固定的對象,這是非常危險的,可能是空引用異常
我們可以寫很多if
做空檢查,但有沒有其他優雅的方式來處理?
目前我們的代碼在C#中,如何妥善處理空校驗
var val = (returnCode as Code).Element(1).Attribute[2].Value
你可以看到,代碼獲取返回值,這是一個固定的對象,這是非常危險的,可能是空引用異常
我們可以寫很多if
做空檢查,但有沒有其他優雅的方式來處理?
如果表達式的評估過程中害怕的潛在null
,使用貓王操作?.
而不是.
安全地訪問屬性:
// val will be null if any in the chain is null
var val = (returnCode as Code)?.Element(1)?.Attribute[2]?.Value;
您還可以使用?[
檢查數組在訪問索引之前不爲空:
Attribute?[2]
第一段代碼沒用,第二段代碼只能用C#6+工作 –
@ m.rogalski對於第一部分,我誤解了它似乎的問題。對於第二部分,我沒有看到問題中哪裏有過時的C#版本的要求。 – Pac0
即使最後一個屬性爲null,您的示例也會引發異常。這不是什麼空檢查。 –
您是否在尋找'?.'' –
查看[null conditional operato r](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators) –
不知道這是否是有意的,但請記住'returnCode'也可以在您的代碼中爲null。 –