Vì vậy, tôi đang làm rất nhiều công việc cơ sở dữ liệu trong một ứng dụng - và có một số giá trị trả về có thể có của hệ thống bộ nhớ đệm của tôi. Nó có thể trả về null, nó có thể trả về một kiểu mặc định (type) hoặc nó có thể trả về một đối tượng không hợp lệ (bởi đối tượng không hợp lệ, ý tôi là một đối tượng có giá trị/thuộc tính không chính xác). Tôi muốn tạo một phương thức tiện ích mở rộng để thực hiện tất cả các kiểm tra đó cho tôi, như vậy:Phương thức mở rộng kiểm tra đơn giản
public static bool Valid<T> (this T obj) where T: class
{
if (obj == null)
return false;
else if (obj == default(T))
return false;
//Other class checks here
else
return true;
}
Vấn đề là, trình biên dịch của tôi nói với tôi rằng if (obj == default(T))
sẽ luôn là sai.
Tại sao lại như vậy?
Ứng dụng có cung cấp cho bạn lỗi hoặc cảnh báo trình biên dịch hay không. Tôi không nhận được. nó biên dịch tốt. –
@GregB. Nó có thể là 'resharper' cho anh ta một gợi ý ... – gdoron
@GregB vâng, tôi đã resharper. – caesay