如何在平等比较中处理空值?

Jad*_*ias 3 .net c# operators iequatable equals-operator

当我必须实现相等比较器

public class SampleClass
{
    public int Prop { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我应该做

null == new SampleClass() 
Run Code Online (Sandbox Code Playgroud)

new SampleClass() == null
Run Code Online (Sandbox Code Playgroud)

new SampleClass().Equals(null)
Run Code Online (Sandbox Code Playgroud)

假?

那怎么样?

new SampleClass() != null
Run Code Online (Sandbox Code Playgroud)

它应该也是假的吗?

更新人们质疑这个问题背后的原因.它应该是!=和==永远是对立的.但是如果我实现这些方法所以所有这些比较都会导致错误,那么将会出现==和!=运算符会产生相同结果的情况.因此,是否应该返回true或false是一个两难的选择.

Mic*_*ers 7

这甚至是个问题吗?不,null永远不应该等于一个对象.

编辑:因此,通过扩展,new SampleClass() != null应该是true.null不喜欢NaN; 它非常明确.