2017-09-04 84 views
0

目前我們的代碼在C#中,如何妥善處理空校驗

var val = (returnCode as Code).Element(1).Attribute[2].Value 

你可以看到,代碼獲取返回值,這是一個固定的對象,這是非常危險的,可能是空引用異常

我們可以寫很多if做空檢查,但有沒有其他優雅的方式來處理?

+1

您是否在尋找'?.'' –

+0

查看[null conditional operato r](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators) –

+0

不知道這是否是有意的,但請記住'returnCode'也可以在您的代碼中爲null。 –

回答

0

如果表達式的評估過程中害怕的潛在null,使用貓王操作?.而不是.安全地訪問屬性:

// val will be null if any in the chain is null 
var val = (returnCode as Code)?.Element(1)?.Attribute[2]?.Value; 

您還可以使用?[檢查數組在訪問索引之前不爲空:

Attribute?[2] 
+0

第一段代碼沒用,第二段代碼只能用C#6+工作 –

+0

@ m.rogalski對於第一部分,我誤解了它似乎的問題。對於第二部分,我沒有看到問題中哪裏有過時的C#版本的要求。 – Pac0

+0

即使最後一個屬性爲null,您的示例也會引發異常。這不是什麼空檢查。 –