hashCode 属性

int hashCode
override

该对象的哈希码。

哈希码是一个整数,表示对象的状态,该状态影响 operator == 比较操作。

所有对象都有哈希码。由 Object 实现的默认哈希码仅表示对象的标识,就像默认的 operator == 实现仅认为如果对象相同(请参阅 identityHashCode)则对象相等一样。

如果 operator == 被重写以使用对象状态,则哈希码也必须相应改变以表示该状态,否则对象不能用于像默认的 SetMap 实现这样的基于哈希的数据结构。

根据 operator == 比较相等的对象必须有相同的哈希码。对象的哈希码只有在对象以影响相等性的方式改变时才应该改变。对于哈希码没有进一步的要求。它们不需要在程序执行之间保持一致,也没有分布保证。

不相等的对象允许有相同的哈希码。技术上甚至允许所有实例都有相同的哈希码,但如果冲突发生得太频繁,可能会降低像 HashSetHashMap 这样的基于哈希的数据结构的效率。

如果子类重写了 hashCode,则还应重写 operator == 操作符以保持一致性。

实现

int get hashCode => SystemHash.hash2(x.hashCode, y.hashCode, 0);