Перегрузить оператор ==, но не потерять возможности сравнения с null - C#

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

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

Как перегрузить оператор == для класса, но так чтобы проверка на null осталась работоспособной. Потому как если я перегружаю оператор == в классе
        public static bool operator == (Person one, Person two)
        {
            return one.age == two.age;
        }
А потом пытаюсь сделать это
Person oldest = null;
...
if (oldest == null) //вылет. Оно логично, ведь я пытаюсь обратиться к полю age у null"
Перегрузка оператора == в виде
        public static bool operator == (Person one, Person two)
        {
            if (one == null || two == null)//проверить на null
                return false;
 
            return one.age == two.age;
        }
Ничего не даёт, теперь получается что я в оператор == вызываю оператор == что тоже плохо, так как же проверить адрес, а не сам объект?

Решение задачи: «Перегрузить оператор ==, но не потерять возможности сравнения с null»

textual
Листинг программы
public class Foo : IEquatable<Foo>
{
    public override bool Equals(object right)
    {
        if (object.ReferenceEquals(right, null))
            return false;
        if (object.ReferenceEquals(this, right))
            return true;
        if (this.GetType() != right.GetType())
            return false;
        return this.Equals(right as Foo);
    }
    public bool Equals(Foo other)
    {
        // ...
    }
}

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


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

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

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