Tôi sử dụng các loại Nullable<T>
khá nhiều khi tải giá trị vào các lớp và cấu trúc khi tôi cần chúng không có giá trị, chẳng hạn như tải giá trị nullable từ cơ sở dữ liệu (ví dụ bên dưới).Đúc (int?) Null so với int mới?() - Cái nào tốt hơn?
Hãy xem xét đoạn mã này:
public class InfoObject
{
public int? UserID { get; set; }
}
// Load the ID into an SqlInt32
SqlInt32 userID = reader.GetSqlInt32(reader.GetOrdinal("intUserID"));
Khi tôi cần phải tải một giá trị vào một tài sản nullable, đôi khi tôi làm điều này:
infoObject.UserID = userID.IsNull ? (int?)null : userID.Value;
Đôi khi tôi làm điều này thay vì:
infoObject.UserID = userID.IsNull ? new int?() : userID.Value;
Mặc dù chúng đạt được kết quả tương tự, tôi muốn xem liệu có ai biết sử dụng nào tốt hơn trong khoảng từ 012 khôngvà new int?()
liên quan đến hiệu suất, mã IL nhỏ nhất, thực tiễn tốt nhất, v.v ...?
Nói chung tôi đã ưu tiên phiên bản new int?()
của mã ở trên, nhưng tôi không chắc liệu việc truyền (int?)null
có nhanh hơn để trình biên dịch giải quyết hơn new int?()
hay không.
Chúc mừng!
Tôi đồng ý với bạn. '(int?) null' trông đẹp hơn' new int?() 'đặc biệt khi được sử dụng trong các câu lệnh điều kiện trong dòng như ví dụ của tôi cho thấy. Về câu hỏi của bạn: bạn trả lời nó khi bạn nói rằng IL là như nhau. Thời gian xây dựng hiện không phải là vấn đề (trừ khi tôi sử dụng TFSBuild, nhưng đó là một câu chuyện hoàn toàn khác) vì vậy miễn là IL khớp, tôi hạnh phúc :) – Codesleuth
Yêu thích của tôi (với phiên bản truyền gần như một giây) là 'mặc định (int?)'. – sblom