Перегрузить ==, Equals, CompareTo - C#

Узнай цену своей работы

Формулировка задачи:

Ребята, прошу прощения за очень глупый вопрос, но никак не соображу, что лучше сделать. Есть класс. В классе мне надо реализовать Icomparable, Iequatable и перегрузить операции сравнения. И вот что вышло - (плохо вышло)
 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 я вызываю свой перегруженный == для сравнения с Null, ну а он - вызывает соответственно Equals или CompareTo.... Что в такой ситуации лучше сделать? Только вручную переписать оператор ==? Спасибо!

Решение задачи: «Перегрузить ==, Equals, CompareTo»

textual
Листинг программы
// Так
if ((object)other == null) return 1;
 
// Или так
if (ReferenceEquals(other, null)) return 1;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы