.Net Framework 中的 HashCode 等效项

2024-06-22

在将 .NET Core 项目转换为 .NET Framework 时,需要注意的一件事是使用哈希码现在需要转换为等效的内容。可以看出,Hashcode 特定于 .NET core 版本和一些扩展。

https://learn.microsoft.com/en-us/dotnet/api/system.hashcode?view=dotnet-plat-ext-3.1

想知道如果有任何内置对象类型,那么 .NET Framework 中的用法是否足够接近。


EDIT:

System.HashCode.NET Core 中也可用。您可以使用HashCode.Combine为此,请参阅:https://learn.microsoft.com/en-us/dotnet/api/system.hashcode?view=netcore-2.1 https://learn.microsoft.com/en-us/dotnet/api/system.hashcode?view=netcore-2.1

var combined = HashCode.Combine("one", "two");

(下面是之前的答案)

可以在这里找到长而彻底的答案:https://stackoverflow.com/a/34006336/25338 https://stackoverflow.com/a/34006336/25338

如果您只想要一个简单的答案,您可以将对象哈希组合到一个新的结构(元组、匿名类等)中,然后调用GetHashCode()关于结果。

e.g.

public override int GetHashCode() {
    return new { MyField1, MyField2 }.GetHashCode();
}

详细说明上面链接的答案,如果您想让它更容易(?),您当然可以创建一个通用的静态帮助器类来为您完成工作:

 public class MyHashCode
    {
        public static int Hash(params object[] values)
            => CustomHash(1009, 9176, values.Select(v => v.GetHashCode()).ToArray());

        // From answer https://stackoverflow.com/a/34006336/25338
        public static int CustomHash(int seed, int factor, params int[] vals)
        {
            int hash = seed;
            foreach (int i in vals)
            {
                hash = (hash * factor) + i;
            }
            return hash;
        }
    }

并这样称呼它:

  public class UnitTest1
    {
        [Fact]
        public void Test1()
        {
            string s1 = "yezz";
            string s2 = "nope";


            var hash = Utils.MyHashCode.Hash(s1, s2);
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.Net Framework 中的 HashCode 等效项 的相关文章

随机推荐

  • PHP usort 重新排序数组,所有排序值都相同

    我使用 usort 对每个元素中具有关联数组的数组进行排序 当我在数组中排序的所有值都相同时 它仍然会更改数组中元素的位置 有没有办法防止这种情况 例如这个 array array name gt Ben authn weight gt 8
  • 在真实 iPhone 上测试应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 将 iphone 应用程序从 xcode 部署到 iphone https stackoverflow com questions 5091883 deploy an iphone app from
  • 在 Mac OS X 上构建 Google Breakpad

    我正在尝试建立谷歌 Breakpad http code google com p google breakpad 对于 Mac OS X 作为移植应用程序的一部分 基于主干修订版 782 Breakpad 维基 http code goo
  • 在专用 Worker 中生成共享 Worker

    我正在玩WebWorkers 不知何故 我想到让一个页面的不同实例知道另一个页面何时关闭 因此我写了一个 Shared Worker 并且它工作得很好 但现在我想要一个专用工作人员充当共享工作人员的接口 这样 UI 中昂贵的操作就不会影响与
  • Liquid:我可以从数组中获取随机元素吗?

    我正在尝试从数组中选择一个随机元素 使用 Liquid Jekyll 可以吗 我可以创建一个数组 并访问给定的索引 但是有没有办法 洗牌 数组 然后选择一个索引 从而从数组中获取随机元素 prefix Foo Bar Baz page pr
  • 是否可以保存对 JavaScript 中尚不存在的元素的引用?

    我以前曾尝试问过这个问题 但很难解释 所以在这里我将尝试重新表述它 这是我的 HTML 正文
  • 如何使用公钥隐私/完整性模式验证 PFX

    我有一个嵌入式软件 可以生成 P12 PFX 格式的输出数据 PFX 是not受密码保护 这意味着数据不是使用密码派生的加密 MAC 密钥 而是使用公钥加密并使用我的私钥签名 In RFC7292 第 3 1 节 https www rfc
  • 反转 PDF 中的白色和黑色

    给定一个黑白 PDF 如何反转颜色 使背景为黑色 其他所有内容为白色 Adobe Reader 可以做到这一点 首选项 gt 辅助功能 仅供节目中观看之用 但不会从本质上更改文档 从而使其他 PDF 阅读器中的颜色也发生反转 如何永久反转颜
  • Jlist 覆盖列表是自动的吗? (漏洞)?

    我希望我能得到帮助 我会问一般性问题 我正在使用一个JList 并且由于JList没有 值 文本 因此我可以显示文本并在代码中使用该值 由于这次泄漏 我创建了List对象 myList 与并行工作JList 我添加的每个项目JList我添加
  • 具有无限参数的 C# 方法或具有数组或列表的方法?

    我最近了解到您可以创建一些具有无限参数的方法 例如 SomeMethod params int numbers 但我的问题是 这与仅创建一个接收列表或数组的方法有什么区别 SomeMethod int numbers SomeMethod
  • jQuery cookie 过期时间

    我能够使用 jQuery 设置 cookie 并重定向到登陆页面 但我不知道如何将 cookie 到期日期设置为少于一天 例如 15 分钟 我无法在中找到解释插件文档 https github com carhartl jquery coo
  • 计算PE文件中入口点的文件偏移量

    In http en redinskala com finding the ep http en redinskala com finding the ep 有关于如何查找 exe 文件中入口点的文件偏移量的信息 在这里我可以读到 EP 文
  • fopen 中的 w+ 模式?

    fopen handle w 我想要打开一个 CSV 文件 读取每一行并对数据库执行一些操作 然后截断 CSV 文件并编写类似的内容 该文件已被读取 w 表示读 写 但文件也会被截断 那么 如果 fopen w 只会删除其中的内容 那么读取
  • 如何将后端计时器与移动应用程序同步

    我正在开发一个选择用户并有 15 秒时间的应用程序 该用户响应的计时器 用户应用程序每 5 秒查询一次数据库 以查看是否选择了该用户 如果是这样 移动应用程序将开始 15 秒 定时器 问题是计时器永远不会匹配 因为用户应用程序可以位于与后端
  • 现有的 swf mp4 播放器? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的网站上放了一个 mp4 文件http example com a mp4 http example
  • 如何在 R 中分割数据集并绘图

    我正在使用如下数据集 1 48434 14566 1 56711 6289 1 58826 4174 2 56626 6374 2 58888 4112 2 59549 3451 2 60020 2980 2 60468 2532 3 56
  • .selectpicker 不是一个函数

    我正在尝试使用引导选择 http silviomoreto github io bootstrap select 并从 javascript 引用它 但我总是收到错误 selectpicker is not a function 我读到的有
  • C/C++ 中的两个“主要”函数

    我可以用 C 或 C 编写一个具有两个主要函数的程序吗 不 所有程序都有一个 main 这就是编译器和链接器生成从某个合理位置开始的可执行文件的方式 你基本上有两个选择 让 main 解释一些命令行参数来决定实际调用哪个 main 缺点是您
  • 在 jQuery 选择器中连接

    简单的问题 我有一个 js 变量 我也想在 jQuery 选择器中连接起来 但是它不起作用 也没有弹出任何错误 怎么了 如何正确地将变量连接到 jQuery 选择器中的某些文本 div div
  • .Net Framework 中的 HashCode 等效项

    在将 NET Core 项目转换为 NET Framework 时 需要注意的一件事是使用哈希码现在需要转换为等效的内容 可以看出 Hashcode 特定于 NET core 版本和一些扩展 https learn microsoft co