该方法返回null,为什么检查null会导致泛型重载?

时间:2019-04-10 05:06:06

标签: c# nullreferenceexception

    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 个答案:

答案 0 :(得分:1)

您可以使用ReferenceEquals。同样,如果f1或f2为null,则f1.Value将引发异常。请使用f1?.Value或使用referenceequals。

您的代码应如下所示:

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() and == operator