在.NET GetHashCode方法中,很多地方都使用.NET 方法.特别是在快速查找集合中的项目或确定相等性时.是否有关于如何GetHashCode为我的自定义类实现覆盖的标准算法/最佳实践,因此我不会降低性能?
我搜索正确组合成分哈希码的帮助器GetHashCode()似乎带来了一些敌意.我从评论中得到的印象是,一些C#开发人员认为你不应该GetHashCode()经常覆盖- 当然一些评论者似乎认为帮助正确行为的图书馆将毫无用处.这种功能在Java中被认为是有用的,Java 社区要求将它添加到JDK中,现在它已经在JDK 7中了.
是否有一些基本原因在C#中你不需要 - 或者绝对不应 - 像Java一样频繁地覆盖GetHashCode()(并相应地Equals())?我发现自己经常使用Java来做这件事,例如,每当我创建一个我知道要保留的类型HashSet或者用作HashMap(等同于.net Dictionary)中的键时.