匿名类型的平等

时间:2014-05-16 20:14:17

标签: c# equality anonymous-types

为什么Equals()和==的语义在用于比较匿名类型时会有所不同?为什么要比较值和其他比较参考?它背后的原因是什么?

1 个答案:

答案 0 :(得分:9)

==没有调用Equals,它会查找==重载运算符。由于匿名类型没有重载==运算符,因此C#使用引用比较。

但是使用Equals它会比较字段值。这就是==Equals之间的结果不同的原因。

Anonymous Types (C# Programming Guide)

  

因为匿名类型上的Equals和GetHashCode方法是   根据Equals和GetHashCode方法定义   属性,同一匿名类型的两个实例仅相等   如果他们的所有属性都相同。