1672得票22回答
什么是最佳的重写GetHashCode算法?

在.NET中,GetHashCode 方法 在许多.NET基类库中被广泛使用。正确实现它对于快速查找集合中的项或确定相等性尤为重要。 是否有标准算法或最佳实践来为我的自定义类实现GetHashCode,以免降低性能?

192得票7回答
默认实现的Object.GetHashCode()方法

GetHashCode()的默认实现是如何工作的?它是否能够有效地处理结构、类、数组等? 我正在尝试决定在哪些情况下应该自己打包,在哪些情况下可以安全地依赖默认实现。如果可能的话,我不想重新发明轮子。

163得票3回答
.NET中IEqualityComparer<T>中的GetHashCode方法的作用是什么?

我正在尝试理解接口IEqualityComparer的GetHashCode方法的作用。下面的示例来自MSDN:using System; using System.Collections.Generic; class Example { static void Main() { ...

139得票11回答
.NET唯一对象标识符

有没有一种方法可以获得实例的唯一标识符? GetHashCode()对于指向同一实例的两个引用是相同的。但是,两个不同的实例可以(很容易地)获得相同的哈希码: Hashtable hashCodesSeen = new Hashtable(); LinkedList&lt;object&gt...

126得票3回答
正确的覆盖Equals()和GetHashCode()的方法

我以前从未尝试过这个,所以希望有人能向我展示正确的实现方法来覆盖 Except() 和 GetHashCode() 方法。 我正在尝试修改类,以便可以使用 LINQ Except() 方法。public class RecommendationDTO{public Guid Recommen...

71得票2回答
字符串.GetHashCode方法是否考虑整个字符串还是只考虑部分内容?

我很好奇,因为我认为它会对性能产生影响。它是否考虑整个字符串?如果是的话,在长字符串上速度会很慢。如果它只考虑字符串的一部分,那么它的性能将变差(例如,如果它只考虑字符串的开头,那么如果一个HashSet大部分包含相同的字符串,它的性能会很差)。

62得票3回答
如何在.NET (C#)中为字符串创建一个安全存储在数据库中的HashCode?

引用自Eric Lippert的《GetHashCode的指南和规则》: 规则:使用GetHashCode的用户不能依赖其随时间或跨应用程序域保持稳定 假设您有一个客户对象,其中包含诸如名称、地址等字段。如果您在两个不同的进程中创建具有完全相同数据的两个此类对象,则它们不必返回相同的哈希码...

61得票5回答
重写可变对象的 GetHashCode 方法?

我已经阅读了大约10个关于何时以及如何覆盖GetHashCode的不同问题,但还有一些我不太明白的地方。 大多数实现GetHashCode是基于对象字段的哈希代码,但有人提到GetHashCode的值在对象的生命周期中永远不应该更改。如果它基于的字段是可变的,那么它是如何工作的?另外,如果我确...

55得票5回答
有完整的IEquatable实现参考吗?

我在 Stack Overflow 上提问的很多问题都涉及到 IEquatable 的实现。我发现正确实现它非常困难,因为天真的实现中隐藏着许多错误,而我找到的文章都相当不完整。我想要找到或编写一个权威参考,其中必须包括: 如何正确地实现 IEquatable 如何正确覆盖 Equals ...

53得票7回答
等于和哈希代码的最佳策略是什么?

我正在处理一个域模型,并思考在.NET中实现这两种方法的各种方式。你最喜欢的策略是什么? 这是我的当前实现: public override bool Equals(object obj) { var newObj = obj as MyClass; if (null !...