Свойство hashCode
Хеш-код этого объекта.
Хеш-код — это целое число, представляющее состояние объекта, которое влияет на сравнения с помощью operator ==.
У всех объектов есть хеш-коды. Хеш-код по умолчанию, реализованный в Object, представляет только идентичность объекта, так же как реализация operator == по умолчанию считает объекты равными только в том случае, если они идентичны (см. identityHashCode).
Если operator == переопределён так, чтобы учитывать состояние объекта, хеш-код также необходимо изменить, чтобы он представлял это состояние. В противном случае объект нельзя будет использовать в структурах данных на основе хеширования, таких как реализации Set и Map по умолчанию.
Хеш-коды объектов, равных друг другу согласно operator ==, должны совпадать. Хеш-код объекта должен изменяться только в том случае, если объект изменяется таким образом, который влияет на равенство. К хеш-кодам не предъявляются другие требования. Они не обязаны быть одинаковыми при разных запусках одной и той же программы, и никаких гарантий распределения не предоставляется.
У неравных объектов могут быть одинаковые хеш-коды. Технически допустимо, чтобы хеш-коды всех экземпляров совпадали, но если коллизии возникают слишком часто, это может снизить эффективность структур данных на основе хеширования, таких как HashSet или HashMap.
Если подкласс переопределяет hashCode, ему также следует переопределить оператор operator ==, чтобы обеспечить согласованность.
Реализация
int get hashCode => SystemHash.hash4(
left.hashCode, top.hashCode, right.hashCode, bottom.hashCode);
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-math/Rectangle/hashCode.html