Trong đoạn mã C# sau, tôi ghi đè phương thức ==
. _type
là một số loại short
. Vì vậy, tôi thực sự nói rằng hai số WorkUnitType
s giống nhau khi hai số này short
s giống nhau.Kiểm tra ghi đè rỗng trong ==
public static bool operator ==(WorkUnitType type1, WorkUnitType type2)
{
if (type1 == null || type2 == null)
return false;
return type1._type == type2._type;
}
Bởi vì R # cảnh báo tôi, và nó là hoàn toàn rõ ràng lý do tại sao, mà type1
/type2
khả năng có thể được null Tôi đang cố gắng để bắt rằng với if
tuyên bố trên.
Bây giờ tôi đang nhận được StackOverflowException
, điều này hoàn toàn có ý nghĩa bởi vì tôi thực sự đang gọi ghi đè.
Câu hỏi: Làm cách nào để viết phương pháp này "chính xác". Làm thế nào tôi có thể bắt được trường hợp type1
hoặc type2
có thể là null
?
đoán tốt nhất của tôi: Có lẽ tôi chỉ lợi dụng ==
đây và kiểm tra bình đẳng nên được thực hiện với sự Equals
ghi đè. Nhưng tôi vẫn nghĩ vấn đề tồn tại. Vì vậy, lỗi của tôi trong lý luận là ở đâu?
Tôi không biết rằng 'ReferenceEquals' tồn tại. Đây thực sự là câu trả lời. Cảm ơn. – Stephan