Результат вызова IEquatable .Equals (T obj), когда this == null и obj == null?

Что должен делать IEquatable .Equals (T obj) , когда 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 .

8
задан Community 23 May 2017 в 12:21
поделиться