2009-10-11 30 views
5

Với một thể hiện của một tham chiếu hoặc loại giá trị không xác định, có cách nào để kiểm tra xem thể hiện có chứa giá trị mặc định cho loại đó không? Tôi dự tính một cái gì đó như thế này ...C# - Cách kiểm tra xem một thể hiện có phải là giá trị mặc định cho loại

bool IsDefaultValue(object value) 
{ 
    return value == default(value.GetType()); 
} 

Tất nhiên, điều này không có tác dụng vì GetType trả về kiểu thời gian chạy, nhưng tôi hy vọng ai đó có thể đề xuất một kỹ thuật tương tự. Cảm ơn.

Trả lời

9
static bool IsDefaultValue<T>(T input) 
{ 
    return Object.Equals(input, default(T)); 
} 

Lưu ý: bạn không thể sử dụng == cho bình đẳng sử dụng chung loại T.

+4

Bạn có thể bỏ qua đối tượng rõ ràng và chỉ làm Equals (đầu vào, mặc định ((T)) –

+0

1: Brian:) Tất nhiên, tôi muốn càng rõ ràng càng tốt cho loại so sánh này. Hàm của OP là một phương thức thể hiện, và chúng ta không muốn gọi việc thực thi sai của Equals. – Juliet

+0

Dường như nó sẽ là một phương pháp mở rộng tuyệt vời. – LJM

Các vấn đề liên quan