c# - 如何处理相等比较中的空值?

标签 c# .net operators iequatable equals-operator

当我必须实现相等比较器时

public class SampleClass
{
    public int Prop { get; set; }
}

我应该做

null == new SampleClass() 

new SampleClass() == null

new SampleClass().Equals(null)

假的?

然后呢

new SampleClass() != null

它也应该是假的吗?

更新 人们质疑这个问题背后的原因。应该是 != 和 == 总是相反的。但是,如果我实现了这些方法,那么上面的所有比较结果都为假,那么 == 和 != 运算符可能会产生相同的结果。所以 != 应该返回 true 还是 false 是一个两难选择。

最佳答案

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

编辑: 因此,通过扩展,new SampleClass() != null 应该是 truenull 不像 NaN;它的定义非常明确。

关于c# - 如何处理相等比较中的空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296005/

相关文章:

c# - 适用于 Windows 应用程序 (C++/C#) 的屏幕键盘,具有触摸屏功能

c# - IndexOf() 有反义词吗?也许 NotIndexOf()?

c# - 如何在 WPF 中从 System.Drawing.Image 创建 ImageBrush?

c# - 如何每 N 分钟重置一个递增计数器

c# - Entity Framework 创建的主键不会自动递增

java - 为什么 10>>2+5>>2 的计算结果为零?

c# - 需要将 Controller 的操作方法调用到 c# mvc 中的另一个类中

c# - 如何使用.NET 远程扩展环境变量?

c++ - C++ 中的 "new (&variable) value;"有什么作用?

java - 将数学字符串转换为 int