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