.NET:Type.GetHashCode 是否保证唯一?

2023-11-25

我有人使用 Type.GetHashCode 就好像它是主键一样。我认为这是一个可怕的想法,但我想知道是否有某种记录的特殊情况表明没有两种类型具有相同的哈希码。


GetHashCode 没有任何保证,除了它可能会随机分布,不是唯一的。文档特别提到:

GetHashCode 方法的默认实现才不是 保证不同对象的返回值唯一。此外, .NET Framework 不保证默认实现 GetHashCode方法,它返回的值将是相同的 .NET Framework 的不同版本之间。因此, 此方法的默认实现不得用作唯一的 用于散列目的的对象标识符。 ...如果两个对象比较不相等,则两个对象的 GetHashCode 方法不必返回不同的值.

鼓励随机分布以避免哈希冲突(慢字典):

为了获得最佳性能,哈希函数必须生成随机数 所有输入的分布。

保存 GetHashCode 的结果并基于此保存的值做出任何决策也是一个非常糟糕的主意。同一对象可能会在下一次应用程序执行时返回不同的哈希代码:

对象的 GetHashCode 方法必须始终返回相同的值 哈希码只要没有修改对象状态即可 确定对象的 Equals 方法的返回值。注意 这仅适用于应用程序的当前执行,并且 那一个如果运行应用程序,可以返回不同的哈希码 再次.

CLR本身changedGetHashCode 实现 .NET 1 和 .NET 2 之间的字符串,并针对 32 位和 64 位版本使用不同的哈希算法。

From GetHashCode 的指南和规则:

GetHashCode 的设计目的只有一件事:平衡哈希表。做 不要将其用于其他任何用途。

你应该看看加密散列如果你想almost基于对象值的唯一哈希码。

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

.NET:Type.GetHashCode 是否保证唯一? 的相关文章

  • 在 .Net 中创建 EPUB

    有没有可以用来在 NET C 中创建 epub 文件的库 Flowdocument gt epub 转换工具将是理想的选择 但任何类型的库都很棒 我还对评估编写一个程序的复杂程度感兴趣 我知道它基本上是一堆压缩的 XHTML 文件 但我不断
  • 如何使用 vb.net 将数据插入 Access 表?

    我想在 Access 数据库中插入一个新行 我正在考虑做类似的事情 oConnection new Connection connectionstring oTable oCennection table Orders oRow oTabl
  • 为什么 ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩ 是美国的本土名称?

    当我使用这段代码时 var ri new RegionInfo us var nativeName ri NativeName why is nativeName然后是字符串 in Cherokee https en wikipedia o
  • 在 VB.NET 中 a = b = 5 - 不可能吗?

    VB NET 中可以这样做吗a b 5 我知道 也是比较运算符 我的意思是做not结果 例如 如果 b 2 a false b 2 然而 在下面的情况下该怎么做呢 不方便在我的代码中引起了这个问题 一些对象a b z由方法中的 ref 传递
  • 基于 Web.Config 使用的 GAC 程序集版本

    Good Day 我有一个在 GAC 中使用自定义程序集的项目 为了能够使用它 我在中添加了对我的项目的引用 C WINDOWS Microsoft NET assembly GAC MSIL JOHN CommonLib v4 0 1 0
  • VS2017在nuget包中将“Build Action”设置为“Content”

    我创建我的nuget包在gitlab使用以下命令行 nuget pack Prop Configuration Release OutputDirectory nuget REPONAME APPNAME APPNAME csproj 如果
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 设置 runat=server 时输入名称和 id 发生变化

    在我的表单中 我需要插入 文本 类型的不同输入 输入必须是带有名称和 ID 的 html 控件 因为我将此表单发送到外部网址 对于验证 我在所有输入中执行 runat server 然后我可以使用 requiredfieldvalidato
  • 重写某些 .Net Framework 控件的绘制以更改其边框颜色?

    SCENARIO 我正在使用第三方 Windows 视觉主题 当我看到我的应用程序时 它看起来像这样 但是当我使用正常的Aero主题 它看起来到处都有可怕的白色边框 QUESTION 我知道应用程序中使用的配色方案取决于视觉风格 但是 我可
  • 当用户打开文件时如何锁定对文件的访问?

    我正在编写一个 C NET 程序 该程序使用 XmlSerializer 对当前用户正在处理的项目与 XML 文件进行序列化和反序列化 这工作正常 但我试图找到一种方法来防止两个用户从网络驱动器打开同一个文件并让一个用户覆盖前一个用户的保存
  • WCF 服务调用包装器

    为 WCF 服务调用创建包装器的最佳实践是什么 我认为有必要 为了在同一个地方监视所有呼叫 我正在考虑使用这种代码 这是正确的想法吗 RetType t ServiceExecutionContext
  • string.Empty 与 null。您使用哪一个?

    最近工作的同事告诉我不要使用string Empty设置字符串变量时但使用null因为它污染了堆栈 他说不做 string myString string Empty but do string mystring null 真的有关系吗 我
  • Android 手机作为 GSM 调制解调器在 PC 上发送/接收短信?

    是否可以将 Android 移动设备用作 PC 上的 GSM 调制解调器 我正在 net下开发应用程序来发送 接收短信等 现在我想通过 USB 将我的 Android 设备连接到我的 PC 并将其用作 GSM 调制解调器来与其通信 这里是参
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 如何在加载.NET WinForm应用程序user.config文件时捕获异常?

    有时 在使用默认配置系统的 NET 2 0 WinForm 桌面应用程序中 user config文件将被损坏并且无法再加载 当配置系统尝试加载它时 它会抛出一个System Xml XmlException 抛开 为什么文件首先被损坏 的
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • SonarQube -integrationTest.exec -sonar Runner (Gradle) 或“sonar-runner”命令 - 显示 0.0% 覆盖率

    运行基于 Gradle 的构建和集成测试后 我在 build jacoco 文件夹中成功生成了 Jacoco 的 2 个 exec 文件 梯度命令 gradle clean 构建集成测试 完成后 它会在 build jacoco 文件夹下生
  • SelectMany 创建大量 SQL select 语句,而不是带有 join 的 SQL select 语句

    我正在写一个查询SelectMany并检查它在 LINQPad 中生成的 SQL 查询非常简单 假设我有 3 个实体 Customer Order OrderItem OrderItem保存有关订购什么产品以及订购数量的信息 我想得到全部O
  • 为什么“memset(arr, -1, sizeof(arr)/sizeof(int))”不能将整数数组清除为-1?

    是不是不能使用memset在整数数组上 我尝试了以下方法memset调用并没有得到正确的整数值int array int arr 5 memset arr 1 sizeof arr sizeof int 我得到的值是 arr 0 1 arr
  • 如何检查服务是否正在运行[重复]

    这个问题在这里已经有答案了 我想显示服务状态 如果它正在运行或停止 我正在使用下面的代码 但它在开始服务之前显示 已停止 当服务启动时 它显示 正在运行 当它再次停止时 它仅显示 正在运行 我在设置共享首选项状态时犯了任何错误吗 在主要活动
  • 从 pandas.DataFrame 中选择复杂的标准

    例如我有简单的 DF import pandas as pd from random import randint df pd DataFrame A randint 1 9 for x in range 10 B randint 1 9
  • PHP getopt 操作

    这个问题是关于 php 中的 getopt 函数 我需要将两个参数传递给 php 脚本 例如 php script php f filename t filetype 现在 根据文件类型 可以是 u c 或 s 我需要执行正确的操作 我正在
  • 使用 python 从重定向的 stdin 读取文件

    我正在尝试读取通过命令行重定向到标准输入的文本文件的内容 并在接收者必须将其组装回原始形式时通过互联网发送它 例如 python test py lt file txt 我尝试读取该文件并使用以下代码将其组装回来 灵感来自link for
  • 从服务器端强制刷新客户端页面[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 如何从服务器端刷新当前客户端视图页面 例如 如果我想强制刷新所有客户端现在正在查看的页面
  • 如何在卸载时自动从主屏幕删除应用程序快捷方式?

    我正在开发一个应用程序 该应用程序应在安装后将其快捷方式添加到主屏幕 并在卸载应用程序后将其删除 该应用程序将预安装在最终用户设备上 但仍然应该有卸载选项 这个任务看起来很简单 但实施起来却遇到了很多麻烦 我做了什么 使用添加快捷方式到主屏
  • 在整个范围内均匀生成随机数

    我需要在指定的间隔 max min 内生成随机数 此外 随机数应该均匀分布在区间内 而不是位于特定点 目前我生成为 for int i 0 i lt 6 i DWORD random rand max min 1 min 根据我的测试 随机
  • LinkedHashSet .equals() 与 LinkedList .equals() 具有相同的元素但顺序不同

    考虑以下 SSCCE public static void main String args LinkedHashSet
  • CSS:如何垂直和水平对齐图像?

    我的页面有空间容纳图像 例如最大尺寸为 100x100 的图像 用户可以上传任何尺寸的图像 Web 应用程序将在保持宽高比的情况下将其大小调整为 100x100 因此 图像的大小可以调整为 75x100 或 100x75 等 无论调整大小的
  • 如何使用 Django 中内置的“password_reset”视图?

    我在 urls py 中设置了以下条目 r password reset django contrib auth views password reset 但一旦我去http 127 0 0 1 8000 password reset 我收
  • 在 colgroup 中使用文本对齐中心

    我的页面中有一个表格 我使用 colgroups 以相同的方式格式化此列中的所有单元格 它适用于背景颜色等 但我似乎无法弄清楚为什么文本对齐中心不起作用 它不会将文本居中对齐 Example table cellspacing 5 tabl
  • 如何在flutter中显示.9.png格式的图片?

    这是我的代码 new Image asset images launcher border highlight 9 png fit BoxFit fill 当我改变图像的宽度和高度时 它的显示效果很差 但在原生android中显示正常 fl
  • 在原子变量的上下文中什么是总线锁定?

    我使用 C 很长时间了 现在我开始学习汇编并了解处理器的工作原理 不仅仅是为了好玩 而且我必须将其作为测试程序的一部分 在学习汇编时 我开始听到一些在讨论多线程时到处听到的术语 因为我在科学计算中进行了大量的多线程处理 我正在努力了解全貌
  • 用 Java 处理下载

    我如何能够使用 Java 中的 HttpResponse 处理下载 我向特定站点发出了 HttpGet 请求 该站点返回要下载的文件 我该如何处理这个下载 InputStream 似乎无法处理它 或者也许我使用它的方式错误 假设你实际上正在
  • Fortran 可变参数宏中的 CPP/GPP(加上 Fortran // 连接)

    我正在尝试编译一个巨大的 世界知名的数值天气预报代码 主要用 Fortran 90 编写 使用cpp广泛且成功地与 PGI Intel 和 gfortran 合作 现在 我继承了一个版本 其中专家添加了数百个可变参数宏案例 他们使用英特尔和
  • 安装 IE9 后 Visual Studio 2012 崩溃(故障模块 ntdll.dll)

    Okay 自从 Visual Studio RTM 在我的工作计算机上发布以来 我一直在运行它 上周五我安装 更新了 IE 至版本 9 以测试 JavaScript 问题 安装 IE9 并重新启动计算机后 Visual Studio 201
  • .NET:Type.GetHashCode 是否保证唯一?

    我有人使用 Type GetHashCode 就好像它是主键一样 我认为这是一个可怕的想法 但我想知道是否有某种记录的特殊情况表明没有两种类型具有相同的哈希码 GetHashCode 没有任何保证 除了它可能会随机分布 不是唯一的 文档特别