IStructuralEquatable vs Equals?

Roy*_*mir 21 c# equals .net-4.0

根据msdn

IStructuralEquatable

定义支持结构对等比较的方法.结构相等意味着两个对象是相等的,因为它们具有相等的值.它与引用相等不同,后者表示两个对象引用相同,因为它们引用相同的物理对象.

不是它什么Equals应该怎么做?(当覆盖时IEquatable)?

use*_*541 2

您需要 IStructuralEquatable 的原因是为了定义一种适合所有对象的新比较方式。

IStructuralEquatable 接口使您能够实现自定义比较以检查集合对象的结构相等性。也就是说,您可以创建自己的结构相等定义,并指定该定义与接受 IStructuralEquatable 接口的集合类型一起使用。

例如,如果您想要一个按特定定义对其所有元素进行排序的列表。在这种情况下,您不想更改类实现,因此您不想覆盖 Equals 方法。

这将定义比较应用程序中对象的通用方法。