我有一个 class Bar,看起来像这样: Equals 按预期工作,但在 GetHashCode 方面我似乎遗漏了一些东西,因为 LINQ Distinct 等扩展方法未按预期工作。 而且我知道 Distinct 使用 GetHashCode 方法来比较引用所以知道我做错了什么吗? ...
我有一个 class Bar,看起来像这样: Equals 按预期工作,但在 GetHashCode 方面我似乎遗漏了一些东西,因为 LINQ Distinct 等扩展方法未按预期工作。 而且我知道 Distinct 使用 GetHashCode 方法来比较引用所以知道我做错了什么吗? ...
我目前正在尝试弄清楚如何处理这种情况,我想使用一些 object 作为字典中的键,因此我需要它覆盖GetHashCode和Equals方法。 问题是我的 object 的属性之一可以为空。 处理其中一个属性的可能值 null 时,最佳方法是什么? 我的意见是,这将是最好的方法。 至少我会解决这个问 ...
我的任务是编写一个代码来查找包含以下一些字母的字符串:ACDEFHLMNOPRSTUW 这样 function getHash(THE SEARCHING STRING) 得到的结果是 18794359164。 ...
对于 NetCore Web API GET方法,我需要为返回的List<T>计算 ETag。 T 是仅包含原始类型的record形式的 DTO。 我想计算一个 hash 的列表。 我正在搜索有关如何实现GetHashCode()的信息,但找不到任何信息。 object.GetHa ...
我喜欢使用元组来实现 GetHashCode,如此处所述https://intellitect.com/overidingobjectusingtuple/ 。 但是,这似乎不适用于派生的 class。例如:class Base { public int Prop1 { get; set; ...
阅读 Castle.Core 文档,在此链接中,他们建议始终覆盖实现IProxyGenerationHook的类的Equals和GetHashCode方法。 我有一个名为MiHook的 class 实现了这样的接口,但是这个 class 没有 state。所以,我的问题是,如果我有一个无状态的 c ...
我有这个类,在那里我覆盖了 Object Equals: 我收到一个警告“覆盖 object.equals 但不覆盖 object.gethashcode”,我理解覆盖 GetHashCode 的必要性,以便我的类型根据可散列类型进行操作。 据我研究,为了使此代码唯一,通常使用 XOR 运算符 ...
我有一个如下所示的 object; 正如您在上面看到的,object 具有作为 tableMenuItems 的列表元素。 tableMenuItems 属性中有两个 object,这是完全相同的。 我想像下面这样对这个 object 进行分组; 如您所见,如果两个 tablemenuitems ...
有一个class的产品: 我想为此编写一个 IEqualityComparer(我已经有一个用于 Feature 的)。 Feature 是这样的: 到目前为止,我在另一个上写的是这样的: 我在任何地方都找不到关于这个的答案。 有人知道怎么写吗? ...
我有一个 function 看起来像这样: 现在,要求是我希望此方法返回哈希码,使其在 0-10 范围内且不应超过 10。根据我的最简单方法是在返回值之前添加条件检查,然后返回根据我的意愿随机值,但这是一个最佳解决方案,还是我应该设置一个固定的“shardCount”值来实现结果? ...
我正在实施GetHashCode() 。 我想对一个名为string Id的属性中的值求和,然后除以某个常数并返回结果。 我正在使用GetNumericValue() :int sum = 0; foreach (var ch in Id) sum += char.GetNumericVal ...
.NET Standard 2.1 / .NET Core 3引入了System.HashCode可以快速将字段和值组合为哈希码,而无需关心底层实现。 但是,它仅提供最多 8 个值的Combine方法重载。 如果我有一个包含 9 个值(3x3 矩阵)甚至 16 个值(4x4 矩阵)的类,我该怎么 ...
也许我不明白什么。 不,我绝对不明白什么。 有一个带有两个 int 类型属性的自定义类。 重写 GetHashCode 方法,我想使用这两个属性作为获取哈希码的基础。 但是,由于GetHashCode方法的返回类型是int,而我的类中的两个属性都是int。 事实证明,我的属性的各种值的组合会比int ...
我在 VisualStudio C# 项目中使用来自第三方的 Line class(无法访问源代码) 我的代码正在生成数百/数千个包含重复项的行对象,我需要将它们存储在某种集合中(List、HashSet)用于进一步处理(在屏幕上绘图)。 线 class 具有 Point 类型的 StartPoin ...
从 Java 迁移到 C# 开发人员。 在 Java 中,我使用了很多Objects.hash(array)和Objects.hashCode(object)在 hashCode 函数中构建对象的哈希码。 我在 C# 中找不到这些函数的任何等效项。 有任何想法吗? 事实上,我可以调用GetHash ...
在下面的GetHashCode的实现中,当Collection为null或null时,都将导致哈希码为0 。 一位同事建议返回一个随机的硬编码数字(例如19以区别于null集合。 我为什么要这样做? 我为什么要关心null或空集合会产生不同的哈希码? ...
我有标志类型枚举,每个元素的按位表示如下 我将其归为Flags Enum,因为我需要存储这些条目的组合。 我在这里面临的问题是,我确实有一个通用代码来检查HasCode,然后如果HashCode不为零,则进行一些操作。 在这种情况下,我得到相同的具有元素A5和A6返回的代码值,该 ...
我最近发现Visual Studio 2017可以自动生成Equals和GetHashCode替代,但是我想知道为什么GetHashCode实现不在未检查的块中? 我用两个公共字符串属性Foo和Bar创建了一个简单的类,生成的GetHashCode实现如下所示。 public overr ...
我正在尝试创建一个hashcode方法。 我有如下代码: e1值为-410666035,e2值为101205027。k1值为491329214。k2值为491329214。 HashCode步骤: hashCode = 17 tempHashCode = 2044716 ...
我第一次将代码生成功能用于GetHashCode 。 我认为这是一件好事。 但是我不明白第一行代码。 数字如何计算? 如果我将更多字段添加到GetHashCode算法(例如,父类的字段),是否需要在代码的第一行中更改此数字? ...