Перегрузить ==, 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д