Свойство hashCode
Хеш-код этого объекта.
Хеш-код — это целое число, которое представляет состояние объекта, влияющее на сравнения с помощью operator ==.
У всех объектов есть хеш-коды. Хеш-код, реализованный по умолчанию в Object, представляет только идентичность объекта — так же, как реализация operator == по умолчанию считает объекты равными, только если они идентичны (см. identityHashCode).
Если operator == переопределён так, чтобы учитывать состояние объекта, хеш-код тоже должен быть изменён, чтобы представлять это состояние. В противном случае объект нельзя будет использовать в структурах данных на основе хеширования, таких как реализации Set и Map по умолчанию.
Хеш-коды объектов, равных друг другу согласно operator ==, должны совпадать. Хеш-код объекта должен меняться только в том случае, если объект изменяется таким образом, что это влияет на равенство. Других требований к хеш-кодам нет. Они не обязаны быть одинаковыми при разных запусках одной и той же программы, и никаких гарантий относительно распределения значений не даётся.
У неравных объектов могут совпадать хеш-коды. Технически допустимо даже, чтобы хеш-код был одинаковым у всех экземпляров, но слишком частые коллизии могут снизить эффективность структур данных на основе хеширования, таких как HashSet или HashMap.
Если подкласс переопределяет hashCode, ему также следует переопределить оператор operator ==, чтобы сохранить согласованность.
Реализация
external int get 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-core/Object/hashCode.html