匿名类型的平等

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

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

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

匿名类型(C#编程指南)

因为匿名类型上的Equals和GetHashCode方法是根据属性的Equals和GetHashCode方法定义的,所以同一匿名类型的两个实例只有在它们的所有属性相等时才相等。