Перегрузить оператор ==, но не потерять возможности сравнения с 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)
{
// ...
}
}