gethashcode相关内容

使用 GetHashCode 获取 Enum int 值

我有一个枚举 公共枚举 INFLOW_SEARCH_ON{ON_ENTITY_HANDLE = 0,ON_LABEL = 1,ON_NODE_HANDLE = 2}//枚举 INFLOW_SEARCH_ON 我必须使用这个枚举在网格列中进行搜索. 获取我正在使用的列索引 MyEnumVariable.GetHashCode() 哪个工作正常,或者我应该使用 (short)MyE ..
发布时间:2021-12-29 16:30:31 C#/.NET

为什么 C# 不为集合实现 GetHashCode?

我正在将一些东西从 Java 移植到 C#.在 Java 中,ArrayList 的 hashcode 取决于其中的项目.在 C# 中,我总是从 List... 中获得相同的哈希码 这是为什么? 对于我的一些对象,哈希码需要不同,因为它们的列表属性中的对象使对象不相等.我希望哈希码对于对象的状态始终是唯一的,并且仅在对象相等时才等于另一个哈希码.我错了吗? 解决方案 为了正常工作 ..
发布时间:2021-12-27 18:11:45 Java开发

C#字符串的GetHashCode()是如何实现的?

我只是好奇,因为我猜这会对性能产生影响.它会考虑完整的字符串吗?如果是,则在长字符串上会很慢.如果只考虑字符串的一部分,性能会很差(例如,如果只考虑字符串的开头,如果一个HashSet包含大部分相同的字符串,则性能会很差. 解决方案 请务必获取 Reference Source source code 当你有这样的问题时.它比您从反编译器中看到的要多得多.选择一个与您首选的 .NET 目标 ..
发布时间:2021-12-27 16:09:07 C#/.NET

Object.GetHashCode() 的默认实现

GetHashCode() 的默认实现如何工作?它是否足够有效和良好地处理结构、类、数组等? 我正在尝试决定在哪些情况下我应该自己打包,以及在哪些情况下我可以安全地依赖默认实现来做好.如果可能的话,我不想重新发明轮子. 解决方案 namespace System {公共类对象{[MethodImpl(MethodImplOptions.InternalCall)]内部静态外部 int ..
发布时间:2021-12-27 16:03:18 C#/.NET

覆盖 GetHashCode

如您所知,GetHashCode 返回一个半唯一值,可用于标识集合中的对象实例.作为一种很好的做法,建议覆盖此方法并实现您自己的方法. 我的问题是 - 在处理自定义对象时您是否覆盖此方法?如果是这样,您使用什么算法来生成唯一 ID? 我正在考虑生成一个 GUID,然后从该标识符中获取整数数据. 解决方案 当你重写 GetHashCode() 时你还需要重写 Equals(), ..
发布时间:2021-12-23 09:25:59 C#/.NET

符合顺序的 Foo 对象列表的良好 GetHashCode() 覆盖

EnumerableObject : IEnumerable 包装一个 List 如果EnumerableObject a.SequenceEquals(EnumerableObject b),则它们相等. 因此,必须实现 GetHashCode.问题是对列表中的每个元素进行 XOR 运算将返回相同的哈希码,对于任何包含所有且仅具有相同元素的列表,无论顺序如何.就其工作而言,这是 ..
发布时间:2021-12-06 19:48:11 C#/.NET

如何在 .net (c#) 中为可安全存储在数据库中的字符串创建 HashCode?

引用 Eric Lippert 的 GetHashCode 指南和规则: 规则:GetHashCode 的消费者不能依赖它随着时间的推移或跨应用程序域的稳定 假设你有一个 Customer 对象有一堆字段,如名称,地址等.如果你做两个这样的物体具有完全相同的两个不同过程中的数据,它们不必返回相同的哈希代码.如果你在星期二在一个过程中,将其关闭,并再次运行程序星期三,哈希码可以是不一样. ..
发布时间:2021-12-05 12:18:20 C#/.NET

覆盖 GetHashCode 的最佳算法是什么?

在 .NET 中,GetHashCode 方法 用于整个 .NET 基类库的很多地方.正确实施它对于在集合中快速查找项目或在确定相等性时尤为重要. 是否有关于如何为我的自定义类实现 GetHashCode 从而不降低性能的标准算法或最佳实践? 解决方案 我通常采用类似于 Josh Bloch 的 fabulous 有效的 Java.它很快,并创建了一个不太可能导致冲突的非常好的散列. ..
发布时间:2021-11-26 23:48:43 C#/.NET

GetHashCode 中的空集合与空集合

在下面的GetHashCode的实现中,当Collection为null或为空时,都会产生0. 一位同事建议返回一个随机硬编码数字,如 19 以区别于 null 集合.我为什么要这样做?为什么我会关心 null 或空集合产生不同的哈希码? 公共类Foo{公共列表集合{得到;放;}//其他属性省略.公共 int 覆盖 GetHashCode(){var hashCode = 0;如果 (th ..
发布时间:2021-11-24 20:02:34 C#/.NET

GetHashCode 中的空集合与空集合

在下面的GetHashCode的实现中,当Collection为null或为空时,都会产生0. 一位同事建议返回一个随机硬编码数字,如 19 以区别于 null 集合.我为什么要这样做?为什么我会关心 null 或空集合产生不同的哈希码? 公共类Foo{公共列表集合{得到;放;}//其他属性省略.公共 int 覆盖 GetHashCode(){var hashCode = 0;如果 (th ..
发布时间:2021-11-24 19:53:29 C#/.NET

在没有选中/未选中关键字支持的情况下覆盖 VB 中的 GetHashCode?

所以我试图弄清楚如何在 VB 中为大量自定义对象正确覆盖 GetHashCode().经过一番搜索,我找到了 这个精彩的答案. 除了有一个问题:VB 在 .NET 4.0 中缺少 checked 和 unchecked 关键字.据我所知,无论如何.因此,使用 Jon Skeet 的实现,我尝试在具有三个主要成员的相当简单的类上创建这样的覆盖:Name As String、Value As I ..
发布时间:2021-09-16 19:05:57 其他开发

Object.GetHashCode() 的实现

我正在阅读 Effective C# 和有一个关于 Object.GetHashCode() 的评论,我不明白: Object.GetHashCode() 使用 System.Object 类中的内部字段来生成哈希值.创建的每个对象都会分配一个唯一的对象键,并在创建时存储为整数. 这些键从 1 开始并在每次获得任何类型的新对象时递增创建.对象标识字段在 System.Object 构造函数 ..
发布时间:2021-06-11 19:34:01 C#/.NET

如何将System.HashCode.Combine与8个以上的值一起使用?

.NET Standard 2.1/.NET Core 3 介绍 System.HashCode 文档,简单地将由连续的 Combine 调用创建的哈希码相加是不是解决方案. 正确的是,静态 Combine 方法最多只允许8个值,但这些似乎只是舒适方法.要组合8个以上的值,您必须求助于实例化 HashCode 并像这样使用它: 公共重写int GetHashCode(){HashCode ..
发布时间:2021-05-13 20:29:55 C#/.NET

GetHashCode()经常重写冲突方式

我使用的是unity,而unity中没有元组,因此我创建了自己的元组类,因为我的Dictionary需要它. Dictionary 我创建的平铺类,与解决该问题并没有真正的联系(至少我认为这无济于事). 但是问题是我在元组中同时使用了负整数和正整数,并且当我将当前的 GetHashCode()与 Tuples 一起使用时,有时得 ..
发布时间:2021-05-13 20:29:52 C#/.NET

如何在C#结构中实现GetHashCode()

我有一个重写 Equals()方法的结构,编译器抱怨 GetHashCode()没有被重写. 我的结构: 私有结构键{...公共重写int GetHashCode(){返回 ?;}public int FolderID;公共MyEnum SubItemKind;public int SubItemID;} 实现 GetHashCode()方法的正确方法是什么? a) 返回Fol ..
发布时间:2021-05-04 20:39:11 C#/.NET

GetHashCode等于C#中的类的实现

我有一个Person类,必须重写Equals和GetHashCode方法.如果名称匹配或电子邮件匹配,则两个人对象相等.使用相当有效的哈希函数来执行此操作的好方法是什么? class Person{字串名称字符串电子邮件公共重写等于(object obj){如果(ReferenceEquals(obj,null))返回false;如果(ReferenceEquals(this,obj))返回t ..
发布时间:2021-05-04 20:39:00 C#/.NET

逆向工程String.GetHashCode

String.GetHashCode的行为取决于程序体系结构.因此它将在x86中返回一个值,在x64中返回一个值.我有一个必须在x86上运行的测试应用程序,它必须预测从必须在x64上运行的应用程序输出的哈希码. 下面是从mscorwks中反汇编String.GetHashCode实现. 公共重写不安全int GetHashCode(){固定(char * text1 =(((char *) ..
发布时间:2021-04-18 19:57:26 C#/.NET