为什么Equals()和==的语义在用于比较匿名类型时会有所不同?为什么要比较值和其他比较参考?它背后的原因是什么?
答案 0 :(得分:9)
==
没有调用Equals
,它会查找==
重载运算符。由于匿名类型没有重载==
运算符,因此C#使用引用比较。
但是使用Equals
它会比较字段值。这就是==
和Equals
之间的结果不同的原因。
Anonymous Types (C# Programming Guide)
因为匿名类型上的Equals和GetHashCode方法是 根据Equals和GetHashCode方法定义 属性,同一匿名类型的两个实例仅相等 如果他们的所有属性都相同。