问题标签 [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.
c# - 在枚举上使用 XOR 运算符重载 GetHashCode 和相等运算符
我有以下类,它是静态分析包的一部分。
- 该
MetricKey
对象用作字典键。 Decision
,MetricUnit
&Portfolio
都是枚举。
我必须重写相等运算符 (==) 才能使字典键匹配工作。我使用了http://msdn.microsoft.com/en-us/library/ms173147.aspx上的指南。指导说我应该重载我已经完成的 GetHashCode 方法,但我不明白将我的枚举转换为整数以进行 XOR (^) 操作的含义。我所做的是否有效,或者由于我的枚举整数值重叠,我是否会得到冲突的哈希码?:
c# - Equals 和 GetHashCode 的最佳策略是什么?
我正在使用域模型,并且正在考虑我们必须在 .NET 中实现这两种方法的各种方法。你的首选策略是什么?
这是我目前的实现:
null - 空字段上的GetHashCode?
如何处理GetHashCode
函数中的空字段?
.net - 为什么要使用“基于素数”的哈希码实现而不是“幼稚”的实现?
我已经看到建议使用 GetHashCode 函数的素数实现,例如这里。但是,使用以下代码(在 VB 中,抱歉),似乎该实现提供了与“天真”异或实现相同的哈希密度。如果密度相同,我会假设两种实现中的碰撞概率相同。关于为什么首选主要方法,我是否遗漏了什么?
我假设如果哈希码是一个字节,我不会失去整数情况的一般性。
c# - .Net HashSet 唯一性计算是否完全基于哈希码?
我想知道.NetHashSet<T>
是否完全基于哈希码,或者它是否也使用相等?
我有一个特定的类,我可能会实例化数百万个实例,并且有合理的机会在那时一些哈希码会发生冲突。
我正在考虑使用 HashSet 来存储这个类的一些实例,并且想知道它是否真的值得做——如果一个元素的唯一性只取决于它的哈希码,那么这对我来说对真正的应用程序没有用
MSDN 文档在这个主题上似乎相当模糊 - 任何启示将不胜感激
equals - 如何实现 IEquatable当可变字段是相等的一部分时 - GetHashCode 的问题
我在我的应用程序中使用实体框架。
我用实体的部分类实现了IEquatable<T>
接口:
现在在我的代码中,我以这种方式使用它:
注意(我在调试器可视化器中检查)EntityCollection 类将其实体存储在 HashSet 中,因此它与 GetHashCode 函数有关,我希望它依赖于 ID,因此实体通过它们的 ID 进行比较。
问题是当我点击保存时,ID 从 0 变为它的 db 值。所以问题是我怎样才能有一个平等的对象,被正确地散列。
请帮助我找出 GetHashCode 函数中的问题(按 ID)以及我可以更改哪些内容以使其正常工作。
非常感谢。
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
c# - 字典键不包含键中已包含的键
为什么以下“存在”布尔变量的值为假???
我已经覆盖了 GetHashCode() 和 Equals() 方法,如下所示:
c# - NHibernate 设置:我应该覆盖 Equals 和 GetHashCode 吗?
我是 NHibernate 的新手。我正在为一些多对一和多对多关联使用 <set ... > 映射。这些作为 ICollection<T> 类型的属性公开,实际上由 HashSet<T> 实现。
我的问题是,我是否应该为相关类型覆盖 Equals 和 GetHashCode,以便它们匹配类型的数据库标识(实际上,当 Id 属性相等时,对象是相等的)?或者 NHibernate 是否以某种方式为我处理这个问题?
如果我这样做,如果我想在任何时候在多对多集合中插入多个值,我会看到一个问题,因为新元素的 Id 可能是 Guid.Empty; 因此被视为同一项目。
c# - 必须做什么才能将引用类型的值用作字典键?
假设我有一个T
要用作Dictionary<T,U>
集合中的键的类。
我必须实现什么才能T
使这些键基于值T
而不是T
引用?
我希望它只是GetHashCode()
。