这个哈希来自什么?

时间:2014-09-05 21:12:56

标签: c# hash

我可以显示这样的哈希码:

            string str = "Hello World !";
        MessageBox.Show(str.GetHashCode().ToString());

这很简单,消息框返回哈希码" Hello World!" 。 但是我想知道我什么时候使用代码这样:

            MessageBox.Show(GetHashCode().ToString());

此代码会发生什么?它给了我一个像这样的代码" 64923656" 。如果我再次运行我的应用程序,它会给我另一个代码!它是随机哈希码吗?或者这是一个特殊字哈希码?!

感谢您的阅读。

3 个答案:

答案 0 :(得分:3)

它在GetHashCode()上呼叫this,这可能是基于您使用MessageBox的Windows表单。

答案 1 :(得分:1)

这是您班级的HashCode当前实例。您正在调用从对象继承的Object.GetHashCode方法。

答案 2 :(得分:0)

有关GetHashCode()确实看到这篇文章的非常好的解释:

How is GetHashCode() of C# string implemented?

你特别感兴趣的可能是

  

s_UseRandomizedStringHashing变量启用了哈希算法的安全版本,旨在使程序员摆脱麻烦,做一些不明智的事情,比如使用GetHashCode()为密码或加密等事件生成哈希值。它由app.exe.config文件中的条目启用

我相信这是导致同一字符串的哈希值在程序执行之间发生变化的原因。