2016-07-29 90 views
-3

考慮到值類型總是默認初始化並且永遠不會爲空值檢查通過參數傳遞給方法的值類型是否值得?通過參數傳遞的空值檢查值類型

E.g.是否值得進行以下檢查

public void Method(Guid x) 
{ 
    if (x == null) 
    throw new ArgumentNullException(); 
... 
} 
+4

您無法將值類型與空值進行比較。你會得到一個編譯器錯誤。你可以做的是將其與'default(Guid)'進行比較。這是一個類似的檢查,但'default(type)'通常也是一個有效的值(例如'default(int)'爲0),所以你需要小心。 – itsme86

+2

什麼是空檢查的東西,永遠不能爲空?這個背後還有其他一些問題嗎? –

+0

@Venky它*已經*一個Guid,有什麼要驗證? 'Parse'和'TryParse'用於將* strings *轉換爲Guid –

回答

1

雖然條件在技術上是有效(因爲運算符重載規則和可空類型),它永遠只能評估到false。這就是爲什麼在某些情況下,你會得到一個編譯器警告,讓你知道唯一可能的結果是false

所以,除非有更多的你的問題,它涉及到詢問如果這個代碼是值得的:

public void Method(Guid x) 
{ 
    if (false) 
    throw new ArgumentNullException(); 
... 
} 

答案應該是很明顯的。