В следующем фрагменте C# я переопределяю метод ==
. _type
- это номер типа short
. Поэтому я на самом деле говорю, что два WorkUnitType
s такие же, когда эти два short
s одинаковы.Проверить значение null in == override
public static bool operator ==(WorkUnitType type1, WorkUnitType type2)
{
if (type1 == null || type2 == null)
return false;
return type1._type == type2._type;
}
Поскольку R # предупреждает меня, и это совершенно понятно, почему, что type1
/type2
потенциально может быть пустым, я пытаюсь поймать, что с if
заявлением выше.
Теперь я получаю StackOverflowException
, что имеет смысл, потому что я на самом деле вызываю переопределение.
Вопрос: Как написать этот метод «правильно». Как я могу поймать дело, что type1
или type2
может быть null
?
Моя догадка: Может быть, я просто злоупотребляет ==
здесь и проверка равенства должно быть сделано с Equals
переопределения. Но все же я думаю, что проблема существует. Итак, где моя ошибка в рассуждении?
Я не знал, что 'ReferenceEquals' существует. На самом деле это ответ. Благодарю. – Stephan