信息
您所需的主题如下所示。但此主题未包含在此库中。

IStructuralEquatable 接口

2013/12/13

定义方法以支持对象的结构相等性比较。

Namespace:  System.Collections
程序集:  mscorlib(位于 mscorlib.dll 中)

public interface IStructuralEquatable

IStructuralEquatable 类型公开以下成员。

  名称说明
公共方法Equals确定某个对象与当前实例在结构上是否相等。
公共方法GetHashCode返回当前实例的哈希代码。
返回顶部

结构相等意味着两个对象由于具有相等的值而相等。它不同于表示两个对象引用相等的引用相等,因为它们引用同一个物理对象。IStructuralEquatable 接口能让您实现自定义比较,以便检查集合对象的结构相等性。也就是,您可以创建自己的结构相等性定义,并指定此定义与接受 IStructuralEquatable 接口的集合类型一起使用。接口包含两个成员:用于通过使用指定的 IEqualityComparer 实现测试是否相等的 Equals,以及对相等的对象返回相同哈希代码的 GetHashCode

说明注意:

IStructuralEquatable 接口仅支持结构相等性的自定义比较。IStructuralComparable 接口支持排序或顺序的自定义结构比较。

.NET Framework 还提供了默认相等比较器,它由 EqualityComparer<T>.Default 属性返回。有关更多信息,请参见示例。

通用元组类(Tuple<T1>Tuple<T1, T2>Tuple<T1, T2, T3> 等)和 Array 类提供了该 IStructuralEquatable 接口的显式实现。通过将数组或元组的当前实例强制转换(在 C# 中)或转换(在 Visual Basic 中)为 IStructuralEquatable 接口值,并将您的 IEqualityComparer 实现作为参数提供给 Equals 方法,您可以定义数组或集合的自定义相等比较。

默认相等比较器 EqualityComparer<Object>.Default.Equals 将两个 NaN 值视为相等。但是,在某些情况下,您可能希望 NaN 值的相等性比较返回 false,以指明这些值不能进行比较。下面的示例定义一个实现 IStructuralEquatable 接口的 NanComparer 类。它使用相等运算符比较两个 Double 或两个 Single 值。它将其他任何类型的值传递到默认相等比较器。

下面的示例创建两个相同的 3 元组对象,对象的成分包括 3 个 Double 值。第二个分量的值为 Double.NaN。然后,此示例会调用 Tuple<T1, T2, T3>.Equals 方法,并调用 IStructuralEquatable.Equals 方法两次。它在第一次时通过默认的由 EqualityComparer<T>.Default 属性返回的相等比较器。它在第二次时传递该自定义 NanComparer 对象。如示例的输出所示,前两个方法调用返回 true,而第三个调用返回 false

Windows Phone OS

受以下版本支持: 8.0

显示: