Spec-Zone.ru › Dart 2

dart:core

Свойство hashCode

int hashCode
override

Код хэша для этого объекта.

Код хэша — это целое число, представляющее состояние объекта, влияющее на сравнения с помощью operator ==.

Все объекты имеют коды хэша. По умолчанию код хэша, реализованный в Object, представляет только идентичность объекта, точно так же, как реализация по умолчанию operator == считает объекты равными только тогда, когда они идентичны (см. identityHashCode).

Если operator == переопределён для использования состояния объекта вместо идентичности, код хэша также должен быть изменён для представления этого состояния; в противном случае объект не может использоваться в структурах данных на основе хэша, таких как реализации по умолчанию Set и Map.

Коды хэша должны быть одинаковыми для объектов, равных друг другу в соответствии с operator ==. Код хэша объекта должен меняться только в том случае, если объект изменяется так, что это влияет на равенство. Больше никаких требований к кодам хэша нет. Они не должны быть согласованными между выполнением одной и той же программы, и нет гарантий распределения.

Объекты, не равные друг другу, могут иметь одинаковый код хэша. Даже технически допустимо, что все экземпляры имеют одинаковый код хэша, но если коллизии происходят слишком часто, это может снизить эффективность структур данных на основе хэша, таких как HashSet или HashMap.

Если подкласс переопределяет hashCode, он также должен переопределить оператор operator ==, чтобы сохранить согласованность.

Реализация

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.18.5/dart-core/DateTime/hashCode.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API