c# - 如何从重新实现 GetHashCode 的类中获取原始哈希码?

标签 c# hash dictionary iequalitycomparer

简短的问题:我如何获得 object.GetHashCode()已重新实现的对象的值 GetHashCode()

长话短说: 所以我有大约十万个对象,每个对象共享许多(非编译时)公共(public)字符串。如果值相等,那么它是相同的实例。

知道这一点,我想我宁愿使用标准对象比较 ( ReferenceEquals ) 而不是完整的字符串比较 - 特别是因为这些比较经常在字典中查找。

所以我声明一个class ReferenceEqualityComparer : IEqualityComparerDictionary<string, TValue> 一起使用,认为无论如何都有用,并着手尝试实现这两种方法。

等于很简单,使用object.ReferenceEquals .

但是我怎样才能得到 object.GetHashCode() 的等价物呢?对于 GetHashCode方法?

即如何获得对象实例的某种表示形式?

我知道还有其他方法可以做到这一点 - 创建一个 InternedString包含对 string 的引用的类, 但不执行 EqualsGetHashCode ,或者为每个对象存储索引而不是字符串,但我现在很好奇 - 实际上有没有办法实现通用的 ReferenceEqualityComparer

最佳答案

关于c# - 如何从重新实现 GetHashCode 的类中获取原始哈希码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414783/

相关文章:

javascript - 如何修复 "Uncaught SyntaxError: Unexptected token L in JSON at position 1"

c++ - 谁能建议一种从类中创建整数键的方法?

c++ - 使用内置的 C++ 结构

ios - 如何在 Swift 中组合两个 Dictionary 实例?

C++ 服务提供商

C# - DataGridView 和 SelectedCells - 查找选定单元格的行索引

c# - 如何从 WinForms 打印多页?

ruby-on-rails - 将 json 响应与哈希数组进行比较

python - 无法比较类型 'ndarray(dtype=int64)' 和 'int64'

c# - 当我尝试将 Metadatatype 与 View 模型一起使用时,出现 InvalidOperationException