c# - GetHashCode 是否足够强大,或者我是否需要另一个哈希函数?

标签 c# .net hash

我在实现数据序列化时遇到了问题。 我有:

  • 4 字节字段:
    • 值范围 0-255
    • 值范围 0- 4
    • 值范围 0-255
    • 值范围为 0-100
  • 和 1 个 int 字段(只有正值)

我有一个想法将所有转换为字节数组(长度 8)或整数数组(长度 2)并获取 C# GetHashCode 方法

GetHashCode 是否足够强大以用作此数据的标识符? 或者有人有更好的主意,也许?

心电图

最佳答案

GetHashCode 并非旨在创建唯一标识符 - 它的主要用途是为散列数据结构(如 HashTable)中的桶分配值 - 参见 http://ericlippert.com/2011/02/28/guidelines-and-rules-for-gethashcode/ .当我需要一个对象的唯一标识符时,由于某种原因对象本身没有提供唯一标识符,我通常只求助于 GUID。在 C# 中生成它们很简单,并且保证在您正在做的任何事情的范围内都是唯一的。

关于c# - GetHashCode 是否足够强大,或者我是否需要另一个哈希函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032245/

相关文章:

c# - .NET 和 SQL Server - Datetime 还是 DateTimeOffset?

c# - 命名空间和类之间的名称冲突

Perl:访问散列内的散列值

java - 如何替换 TreeMap 中的键映射?

c# - 如何在asp.net web api中读取json文件

c# - 在不连接到数据库的情况下创建 DbContext

c# - 如何结束编辑单元格,在单击时更改其内容?

c# - 如何在 Azure 网站中对本地磁盘进行文件引用?

c# - 为什么我不能访问子类中的 protected 变量?

performance - 用最少的辅助内存删除重复项?