2012-04-25 23 views
9

Một câu hỏi đơn giản:C# viết tắt cho Equals() khi cả hai args có thể được null

tôi muốn so sánh hai đối tượng bằng cách sử dụng Equals ảo() phương pháp (không ==). Cả hai có thể là null.

Tôi có nên lặp lại kinh cầu nguyện này:

if ((left == null && right == null) || (left != null && left.Equals(right)) { 

} 

hoặc là có một thành ngữ thanh lịch hơn cho tình huống như vậy?

Trả lời

22

Yup:

if (object.Equals(left, right)) 

hoặc ngay cả khi không làm cho nó rõ ràng rằng nó gọi phương thức tĩnh: (. Cá nhân tôi thích thêm sự rõ ràng mặc dù)

if (Equals(left, right)) 

Các tĩnh object.Equals phương pháp không có tài liệu cực kỳ tốt, nhưng nó thực hiện chính xác những gì bạn muốn :)

+0

Tôi đã phải xem xét các ví dụ để chắc chắn rằng nó thực sự làm những gì là muốn :-) – Joey

+0

Tôi tò mò, tại sao ví dụ thứ hai thậm chí biên dịch? –

+4

@KendallFrey: Tôi không hiểu câu hỏi. Tại sao bạn nghĩ rằng nó * không * biên dịch? –

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