hashCode 属性

int hashCode
继承

此对象的哈希码。

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

所有对象都有哈希码。由 Object 实现的默认哈希码仅表示对象的标识,就像默认的 operator == 实现只考虑当对象完全相同的情况下对象相等(见 identityHashCode)。

如果 operator == 覆盖以使用对象状态,则哈希码也必须更改以表示该状态,否则对象不能用于基于哈希的数据结构,如默认的 SetMap 实现。

对于根据 operator == 认为相等的对象,它们的哈希码必须相同。对象的哈希码应该仅在对象以影响相等性的方式发生变化时更改。对哈希码没有其他要求。它们不需要在相同程序的执行之间保持一致,并且没有分布保证。

不同的对象可以允许有相同的哈希码。从技术上讲,甚至允许所有实例都有相同的哈希码,但如果冲突过于频繁,可能会降低基于哈希的数据结构(如 HashSetHashMap)的效率。

如果子类覆盖 hashCode,则它应该同时覆盖 operator == 操作符以保持一致性。

实现

int get hashCode => SystemHash.hash4(
    left.hashCode, top.hashCode, right.hashCode, bottom.hashCode, 0);