Метод возвращает значение null, почему проверка на нулевое значение приводит к общей перегрузке? - PullRequest
0 голосов
/ 10 апреля 2019
    while (currentNode?.BinaryComp(_value) != null);


    public static bool operator !=(Node<T> f1, Node<T> f2)
    {
        return f1.Value.CompareTo(f2.Value) != 0;
    }

System.NullReferenceException:

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете использовать ReferenceEquals. Кроме того, если f1 или f2 равны нулю, то f1.Value вызовет исключение. Либо используйте, f1? .Value, либо используйте контрольные уравнения.

Ваш код должен выглядеть примерно так:

public static bool operator !=(Node<T> f1, Node<T> f2)
{
    if (object.ReferenceEquals(f1, null))
    {
         return object.ReferenceEquals(f2, null);
    }

    return f1.Value.CompareTo(f2.Value);
}

Вот интересная статья об Equals, ==, ReferenceEquals

C # .Equals (), .ReferenceEquals () и оператор ==

...