5
當我需要將值加載到類和結構體中時,我使用Nullable<T>
10類型相當多,例如從數據庫加載可爲空的值(如下面的示例)。Casting(int?)null與new int?() - 哪個更好?
考慮這個代碼片段:
public class InfoObject
{
public int? UserID { get; set; }
}
// Load the ID into an SqlInt32
SqlInt32 userID = reader.GetSqlInt32(reader.GetOrdinal("intUserID"));
當我需要一個值裝入可空屬性,有時候我這樣做:
infoObject.UserID = userID.IsNull ? (int?)null : userID.Value;
有時候,我這樣做,而不是:
infoObject.UserID = userID.IsNull ? new int?() : userID.Value;
雖然他們達到了相同的結果,但我想看看是否有人知道哪個更適合使用(int?)null
和new int?()
關於性能,最小IL代碼,最佳實踐等?
通常我一直在贊成上面的代碼的new int?()
版本,但我不確定鑄造(int?)null
是否比編譯器更快地解析爲new int?()
。
乾杯!
我同意你的意見。 '(int?)null'看起來好於'new int?()',尤其是當在我的示例中顯示的內聯條件語句中使用時。關於你的問題:當你說IL是相同的時候你回答了。構建時間目前不是問題(除非我使用TFSBuild,但這是一個完全不同的故事),所以只要IL匹配,我很高興:) – Codesleuth 2010-02-11 10:26:09
我最喜歡的(與鑄造版本作爲非常接近的第二)是'default(int?)'。 – sblom 2012-12-14 00:47:30