Мой поиск помощника для правильного объединения составных хэш-кодов для GetHashCode()
, казалось, вызвал некоторую враждебность. У меня сложилось впечатление, что некоторые разработчики С# не думают, что вам следует переопределять GetHashCode()
часто - наверняка некоторые комментаторы, казалось, думали, что библиотека, помогающая получить правильное поведение, будет бесполезной. Такая функциональность считалась достаточно полезной в Java для сообщества Java, чтобы попросить его добавить в JDK, и это теперь в JDK 7.
Есть ли какая-то фундаментальная причина в том, что в С# вам не нужно - или не обязательно - переопределять GetHashCode()
(и, соответственно, Equals()
) так часто, как в Java? Я часто делаю это с Java, например, всякий раз, когда я создаю тип, который, как я знаю, я хочу сохранить в HashSet
или использовать в качестве ключа в HashMap
(эквивалентно,.net Dictionary
).