Như mọi người khác đã nói, string
không cần ?
(là lối tắt cho Nullable<string>
) bởi vì tất cả các loại tham chiếu (class
es) đều không có giá trị. Nó chỉ áp dụng cho loại giá trị (struct
s).
Ngoài ra, bạn không nên gọi ToString()
trên giá trị phiên trước khi bạn kiểm tra xem đó là null
(hoặc bạn có thể nhận được NullReferenceException
). Ngoài ra, bạn không cần phải kiểm tra kết quả của ToString()
cho null
vì nó không bao giờ nên trả lại null
(nếu được triển khai chính xác). Và bạn có chắc chắn muốn trả lại null
nếu giá trị phiên là trống string
(""
)?
này tương đương với những gì bạn có nghĩa là để viết:
public string SessionValue(string key)
{
if (HttpContext.Current.Session[key] == null)
return null;
string result = HttpContext.Current.Session[key].ToString();
return (result == "") ? null : result;
}
Mặc dù tôi sẽ viết nó như thế này (trở rỗng string
nếu đó là những gì giá trị phiên chứa):
public string SessionValue(string key)
{
object value = HttpContext.Current.Session[key];
return (value == null) ? null : value.ToString();
}
"bởi vì tất cả loại tham chiếu (lớp) đã được vô hiệu. " -> Không có vẻ như vậy. 'lớp công khai vector {public static vector func() {return null; }} 'dẫn đến lỗi. – Assimilater
Giao diện dường như không có giá trị luôn – Assimilater
@Assimilater Tôi vừa thử mã của bạn. Nó biên soạn và chạy tốt cho tôi. 'vector' là một lớp, vì vậy' func() 'chắc chắn có thể trả về' null'. – Lucas