问题标签 [gethashcode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1454 浏览

c# - 在枚举上使用 XOR 运算符重载 GetHashCode 和相等运算符

我有以下类,它是静态分析包的一部分。

  • MetricKey对象用作字典键。
  • Decision, MetricUnit&Portfolio都是枚举。

我必须重写相等运算符 (==) 才能使字典键匹配工作。我使用了http://msdn.microsoft.com/en-us/library/ms173147.aspx上的指南。指导说我应该重载我已经完成的 GetHashCode 方法,但我不明白将我的枚举转换为整数以进行 XOR (^) 操作的含义。我所做的是否有效,或者由于我的枚举整数值重叠,我是否会得到冲突的哈希码?:

0 投票
7 回答
16291 浏览

c# - Equals 和 GetHashCode 的最佳策略是什么?

我正在使用域模型,并且正在考虑我们必须在 .NET 中实现这两种方法的各种方法。你的首选策略是什么?

这是我目前的实现:

0 投票
2 回答
17447 浏览

null - 空字段上的GetHashCode?

如何处理GetHashCode函数中的空字段?

0 投票
2 回答
333 浏览

.net - 为什么要使用“基于素数”的哈希码实现而不是“幼稚”的实现?

我已经看到建议使用 GetHashCode 函数的素数实现,例如这里。但是,使用以下代码(在 VB 中,抱歉),似乎该实现提供了与“天真”异或实现相同的哈希密度。如果密度相同,我会假设两种实现中的碰撞概率相同。关于为什么首选主要方法,我是否遗漏了什么?

我假设如果哈希码是一个字节,我不会失去整数情况的一般性。

0 投票
1 回答
973 浏览

c# - .Net HashSet 唯一性计算是否完全基于哈希码?

我想知道.NetHashSet<T>是否完全基于哈希码,或者它是否也使用相等?

我有一个特定的类,我可能会实例化数百万个实例,并且有合理的机会在那时一些哈希码会发生冲突。

我正在考虑使用 HashSet 来存储这个类的一些实例,并且想知道它是否真的值得做——如果一个元素的唯一性只取决于它的哈希码,那么这对我来说对真正的应用程序没有用

MSDN 文档在这个主题上似乎相当模糊 - 任何启示将不胜感激

0 投票
2 回答
1126 浏览

equals - 如何实现 IEquatable当可变字段是相等的一部分时 - GetHashCode 的问题

我在我的应用程序中使用实体框架。

我用实体的部分类实现了IEquatable<T>接口:

现在在我的代码中,我以这种方式使用它:

注意(我在调试器可视化器中检查)EntityCollection 类将其实体存储在 HashSet 中,因此它与 GetHashCode 函数有关,我希望它依赖于 ID,因此实体通过它们的 ID 进行比较。

问题是当我点击保存时,ID 从 0 变为它的 db 值。所以问题是我怎样才能有一个平等的对象,被正确地散列。

请帮助我找出 GetHashCode 函数中的问题(按 ID)以及我可以更改哪些内容以使其正常工作。

非常感谢。

0 投票
2 回答
400 浏览

c# - c# 是否有类似 Java 的 equals 和 gethashcode() 的问题?

c# 是否有类似 Java 的 equals 和 gethashcode 相同的问题?

像这样的问题:http: //onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html

0 投票
2 回答
255 浏览

c# - 字典键不包含键中已包含的键

为什么以下“存在”布尔变量的值为假???

我已经覆盖了 GetHashCode() 和 Equals() 方法,如下所示:

0 投票
2 回答
1392 浏览

c# - NHibernate 设置:我应该覆盖 Equals 和 GetHashCode 吗?

我是 NHibernate 的新手。我正在为一些多对一和多对多关联使用 <set ... > 映射。这些作为 ICollection<T> 类型的属性公开,实际上由 HashSet<T> 实现。

我的问题是,我是否应该为相关类型覆盖 Equals 和 GetHashCode,以便它们匹配类型的数据库标识(实际上,当 Id 属性相等时,对象是相等的)?或者 NHibernate 是否以某种方式为我处理这个问题?

如果我这样做,如果我想在任何时候在多对多集合中插入多个值,我会看到一个问题,因为新元素的 Id 可能是 Guid.Empty; 因此被视为同一项目。

0 投票
4 回答
139 浏览

c# - 必须做什么才能将引用类型的值用作字典键?

假设我有一个T要用作Dictionary<T,U>集合中的键的类。

我必须实现什么才能T使这些键基于值T而不是T引用?

我希望它只是GetHashCode()