Что должен делать IEquatable
, когда this == null
и obj == null
?
1) Этот код генерируется компилятором F # при реализации IEquatable
.Вы можете видеть, что он возвращает true
, когда оба объекта null
:
public sealed override bool Equals(T obj) { if (this == null) { return obj == null; } if (obj == null) { return false; } // Code when both this and obj are not null. }
2) Аналогичный код можно найти в вопросе « в реализации IEquatable является ссылкой отметьте необходимое »или в вопросе« Есть ли полный справочник по реализации IEquatable? ». Этот код возвращает false
, когда оба объекта имеют значение null
.
public sealed override bool Equals(T obj) { if (obj == null) { return false; } // Code when obj is not null. }
3) Последний вариант - сказать, что поведение метода не определено когда this == null
.