【发布时间】:2015-01-02 08:11:27
【问题描述】:
我不明白 Equals 方法为什么采用 (T x, T y)。当您在一个实例上调用该方法时,您不是已经有一个实例可以比较吗? GetHashCode 也一样——如果我已经在现有实例上调用它,为什么还需要一个对象实例作为参数?
如果我调用 a.GetHashCode(b) 会发生什么?用的是哪一个?
【问题讨论】:
我不明白 Equals 方法为什么采用 (T x, T y)。当您在一个实例上调用该方法时,您不是已经有一个实例可以比较吗? GetHashCode 也一样——如果我已经在现有实例上调用它,为什么还需要一个对象实例作为参数?
如果我调用 a.GetHashCode(b) 会发生什么?用的是哪一个?
【问题讨论】:
IEqualityComparer<T> 接口用于比较器 对象。所以,不……你不会已经有一个实例作为实现的一部分。
您可能会想到IEquatable<T>,它通过被比较的对象类型来实现。
【讨论】: