Я прочитал большинство вопросов о StackOverflow относительно GetHashCode
. Но я до сих пор не уверен, нужно ли переопределять GetHashCode
для ссылочных типов. Я подобрал следующее от кого-то, отвечающего в другом вопросе:
Object.GetHashCode() использует внутренний в классе System.Object для генерировать хеш-значение. Каждый объект создан присваивается уникальный объект ключ, сохраняемый как целое число, когда он создано. Эти ключи начинаются с 1 и прирост каждый раз, когда новый объект создается любой тип.
Если это все еще верно в .NET Framework 3.5 (может кто-то, пожалуйста, подтвердите?), то единственная проблема, с которой я сталкиваюсь со стандартными реализациями ссылочных типов, заключается в том, что хеш-код будет иметь плохой дистрибутив.
Я сломаю свои вопросы:
a) Итак, рекомендуется ли переопределить GetHashCode
, если он используется в Dictionary
или выполняется ли реализация по умолчанию просто отлично?
b) У меня есть ссылочные типы, где это было бы легко сделать, поскольку у них есть поля, которые идентифицируют их однозначно, но как насчет тех ссылочных типов, где все члены также являются ссылочными типами. Что мне там делать?