khi tôi cố gắng quá tải toán tử == và! = Trong C# và ghi đè như được đề xuất, tôi tìm thấy Tôi không có cách nào để phân biệt một đối tượng bình thường và null. Ví dụ, tôi đã định nghĩa một lớp phức tạp.overload == (và! =, Tất nhiên) nhà điều hành, tôi có thể bỏ qua == để xác định xem đối tượng có rỗng không
public static bool operator ==(Complex lhs, Complex rhs)
{
return lhs.Equals(rhs);
}
public static bool operator !=(Complex lhs, Complex rhs)
{
return !lhs.Equals(rhs);
}
public override bool Equals(object obj)
{
if (obj is Complex)
{
return (((Complex)obj).Real == this.Real &&
((Complex)obj).Imaginary == this.Imaginary);
}
else
{
return false;
}
}
Nhưng khi tôi muốn sử dụng
if (temp == null)
Khi tạm thời thực sự là null, một số ngoại lệ xảy ra. Và tôi không thể sử dụng == để xác định xem các lhs là null, mà sẽ gây ra vòng lặp vô hạn.
Tôi nên làm gì trong tình huống này.
Một cách tôi có thể nghĩ là đối với chúng tôi một số thứ như Class.Equal (đối tượng, đối tượng) (nếu nó tồn tại) để bỏ qua == khi tôi thực hiện kiểm tra.
Cách bình thường để giải quyết vấn đề là gì?
Cảm ơn bạn.
bản sao có thể có của [Làm cách nào để kiểm tra các giá trị rỗng trong toán tử '==' quá tải mà không có đệ quy vô hạn?] (Http://stackoverflow.com/questions/73713/how-do-i-check-for-nulls -in-an-operator-overload-without-infinite-recursion) – Sam