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