說,我有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
}
是否有任何現有的方法可以完成上面列出的?
說,我有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
}
是否有任何現有的方法可以完成上面列出的?
return number ?? 6;
這裏是你需要的 - Nullable.GetValueOrDefault。
例子:
return number.GetValueOrDefault();
您可以指定將在number.HasValue == false
情況下默認值。在拳頭例如,它是default(int)
= 0
:
return number.GetValueOrDefault(5);
由於SLaks發表評論。它也可以做到:
return number ?? 5;
因爲我發現編譯器替換number == null
風格代碼number.HasValue
所以你可以用你喜歡或您的編碼指南規定的選項。
'返回號碼? 5;' – SLaks 2013-04-29 19:24:28
谷歌福是永遠不會取代經驗=) – 2013-04-29 19:28:06
空合併運營商是答案。如果你要回答你自己的問題,那真的應該是一個尚未被回答的問題,你應該得到正確答案。 – 2013-04-29 19:30:31
奇怪的是,它看起來像OP設法回答他們的問題,在同一秒,因爲它被張貼。從那時起,他們似乎已經將_other_答案併入他們自己的答案中。必須是我的瀏覽器錯誤。 – HABO 2013-04-29 19:35:12
你爲什麼問這個問題?答案可以在以下主要MSDN文檔中找到可以爲空的類型:http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx什麼使得您認爲這將對未來的訪問者有價值? – 2013-04-29 19:36:57
在很多項目中,我經常看到這樣的代碼,因爲開發人員知道'.HasValue'和'.Value'屬性,並在我發佈的問題中使用它們。他們並不知道還有更多可用的選擇。所以我決定通過分享Q&A風格的知識來爲這個問題帶來更多的光芒。這不是一個好主意嗎? – 2013-04-29 19:42:07