2013-04-29 57 views
-3

說,我有int? number。我需要執行以下操作:如果它有HasValue使用空值

if (number.HasValue) 
{ 
    // use number.Value in any way. for example: 
    return number.Value; 
} 
else 
{ 
    return 0; // or another literal or constant value 
} 

是否有任何現有的方法可以完成上面列出的?

+0

奇怪的是,它看起來像OP設法回答他們的問題,在同一秒,因爲它被張貼。從那時起,他們似乎已經將_other_答案併入他們自己的答案中。必須是我的瀏覽器錯誤。 – HABO 2013-04-29 19:35:12

+1

你爲什麼問這個問題?答案可以在以下主要MSDN文檔中找到可以爲空的類型:http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx什麼使得您認爲這將對未來的訪問者有價值? – 2013-04-29 19:36:57

+0

在很多項目中,我經常看到這樣的代碼,因爲開發人員知道'.HasValue'和'.Value'屬性,並在我發佈的問題中使用它們。他們並不知道還有更多可用的選擇。所以我決定通過分享Q&A風格的知識來爲這個問題帶來更多的光芒。這不是一個好主意嗎? – 2013-04-29 19:42:07

回答

5

這裏是你需要的 - Nullable.GetValueOrDefault

例子:

return number.GetValueOrDefault(); 

您可以指定將在number.HasValue == false情況下默認值。在拳頭例如,它是default(int) = 0

return number.GetValueOrDefault(5); 

由於SLaks發表評論。它也可以做到:

return number ?? 5; 

因爲我發現編譯器替換number == null風格代碼number.HasValue所以你可以用你喜歡或您的編碼指南規定的選項。

+7

'返回號碼? 5;' – SLaks 2013-04-29 19:24:28

+2

谷歌福是永遠不會取代經驗=) – 2013-04-29 19:28:06

+2

空合併運營商是答案。如果你要回答你自己的問題,那真的應該是一個尚未被回答的問題,你應該得到正確答案。 – 2013-04-29 19:30:31

相關問題