首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.NET字符串散列函数是否可移植?

.NET字符串散列函数是否可移植?
EN

Stack Overflow用户
提问于 2011-11-07 02:58:39
回答 4查看 2K关注 0票数 15

可能重复:

How do I create a HashCode in .net (c#) for a string that is safe to store in a database?

我使用C# 4.0,通过调用以下命令来获取字符串散列:

代码语言:javascript
复制
"my string".GetHashCode()

此调用生成的代码将存储到数据库中,以备将来使用。此哈希码用于查找字符串的某个子集,然后进行相等比较。

问题包括:

  1. 它是一个标准化的哈希计算吗?我可以假设在不同的环境中计算相同的散列是可能的吗?
  2. 可以通过用Java语言、PL/SQL语言、.Net等编写自己的散列函数来计算相同的散列函数吗?
  3. 我可以假设今天生成的散列明天在相同的环境中也是一样的吗?
  4. 例如,当我关闭计算机并再次运行程序时,或更改区域设置,或某些其他settings?
  5. What是portability?
  6. I的限制,我知道我可以自己做,但也许提供了某种可移植性-
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-07 03:01:44

来自MSDN:

GetHashCode方法的默认实现不保证不同对象的返回值是唯一的。此外,.NET框架不保证GetHashCode方法的默认实现,并且它返回的值在不同版本的.NET框架之间是相同的。因此,此方法的默认实现不能用作唯一的对象标识符进行哈希处理。

因此,您不能假设GetHashCode产生的值是稳定的。这也不仅仅是理论上的-- we've seen the value change in the past

如果你想要一个稳定的散列,你必须自己生成它。

票数 19
EN

Stack Overflow用户

发布于 2011-11-07 03:02:12

Stack Overflow用户

发布于 2011-11-07 03:02:34

http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx

.NET框架不保证GetHashCode方法的默认实现,并且它返回的值在不同版本的.NET框架之间是相同的。因此,此方法的默认实现不能用作散列目的的唯一对象标识符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8029529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档