2010-04-29 61 views

回答

21

最好的是default(int?),因爲它總是按預期工作(引用類型,值類型,甚至泛型)。

+0

以前沒見過,我喜歡它!我一直使用(int?)null,並總是覺得它笨重。 – 2010-04-29 17:51:05

5

我傾向於將(int?)表示法更改爲Nullable<int>。該語言提供了這種語法糖,所以我嘗試使用它。

這也是我稱之爲int而不是Int32的原因。

1

有趣的是,你只需要定義一個返回類型。換句話說,這也將工作:

return Int32.TryParse(Request["id"], out i) ? (int?)i : null; 

...即使編譯器建議你投空: 類型條件表達式不能確定,因爲有「廉政」之間的隱式轉換'< null>'

2

爲你做什麼最清楚。

這就是說,我寧願只返回null,編譯器會計算出細節。

5

沒關係,它會生成完全相同的代碼。由C#編譯器將(int?)null轉換爲new Nullable<int>()。你可以通過編寫一個小測試程序來查看它,並用ildasm.exe來查看它。所以「更好」僅僅是你喜歡的風格。一致的使用int?將是我個人的偏好。

一個實用的注意事項:在典型的調試會話中,您可能很有興趣瞭解null返回。特別是因爲你讀的數據不會產生你所期望的。如果您在單獨一行中寫回歸返回語句,這變得非常簡單:

int i; 
    if (Int32.TryParse(Request["id"], out i)) return i; 
    else return null;  // <== set breakpoint here. 

也擺脫了演員陣容。並生產完全相同的代碼

相關問題