Перегрузить ==, Equals, CompareTo - C#
Формулировка задачи:
Ребята, прошу прощения за очень глупый вопрос, но никак не соображу, что лучше сделать.
Есть класс. В классе мне надо реализовать Icomparable, Iequatable и перегрузить операции сравнения.
И вот что вышло - (плохо вышло)
Плохо - т.к из Equals и CompareTo я вызываю свой перегруженный == для сравнения с Null, ну а он - вызывает соответственно Equals или CompareTo....
Что в такой ситуации лучше сделать?
Только вручную переписать оператор ==?
Спасибо!
public int CompareTo(RationalNumber other) // IComparable
{
if (other == null) return 1;
checked { return (N * other.M).CompareTo(M * other.N); }
}
public static bool operator == (RationalNumber left, RationalNumber right)
{
return left.CompareTo(right) == 0;
}
public override bool Equals(object obj)
{
RationalNumber rationalNumObj = obj as RationalNumber;
if (rationalNumObj == null)
{
return false;
}
return this.Equals(rationalNumObj);
}
public bool Equals(RationalNumber other) // IEquatable
{
if (N == 0 && M == 0)
{
return true;
}
return N * other.M == M * other.N;
}Решение задачи: «Перегрузить ==, Equals, CompareTo»
textual
Листинг программы
// Так if ((object)other == null) return 1; // Или так if (ReferenceEquals(other, null)) return 1;