匿名类型的平等
为什么Equals()和==的语义在用于比较匿名类型时有所不同? 为什么要比较值和其他比较参考? 它背后的原因是什么?
==
不调用Equals
,它查找==
重载运算符。 由于匿名类型没有重载==
运算符,因此C#使用引用比较。
但是使用Equals
可以比较字段值。 这就是==
和Equals
之间的结果不同的原因。
匿名类型(C#编程指南)
因为匿名类型上的Equals和GetHashCode方法是根据属性的Equals和GetHashCode方法定义的,所以同一匿名类型的两个实例只有在它们的所有属性相等时才相等。