Когда я пытаюсь перегрузить операторы == и! = В C # и переопределить значение Equal, как рекомендовано, я обнаружил, что у меня нет способа различить обычный объект и ноль. Например, я определил класс Complex.
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;
}
}
Но когда я хочу использовать
if (temp == null)
Когда temp действительно равен нулю, происходит какое-то исключение. И я не могу использовать ==, чтобы определить, является ли lhs нулевым, что приведет к бесконечному циклу.
Что мне делать в этой ситуации.
Один из способов, который я могу придумать, - это что-то вроде Class.Equal (объект, объект) (если он существует), чтобы обойти ==, когда я делаю проверку.
Как обычно решить проблему?
Спасибо.