hashCode 属性
该对象的服务散列码。
散列码是一个表示对象状态的整数,该状态影响 operator == 比较操作。
所有对象都有散列码。由 Object 实现的默认散列码仅表示对象的身份,就像默认的 operator == 实现将对象视为相同仅在它们是相同的情况下(请参阅 identityHashCode)。
如果 operator == 被重写以使用对象的状态,则哈希码也必须更改以表示该状态,否则对象不能用作基于哈希的数据结构,如默认的 Set 和 Map 实现。
根据 operator == 相等的对象必须具有相同的散列码。当且仅当对象以影响等于性的方式改变时,对象的散列码才应改变。对于散列码没有进一步的要求。它们不需要在相同程序的执行之间保持一致,也没有分布保证。
不相等的对象允许具有相同的散列码。技术上甚至允许所有实例具有相同的散列码,但是如果冲突过于频繁,它可能会降低如 HashSet 或 HashMap 这样的基于哈希的数据结构的有效性。
如果子类重写 hashCode,则应同时重写 operator == 操作符,以保持一致性。
实现
int get hashCode => Object.hash(left, top, width, height);