这个杂碎是什么来的

本文关键字:是什么 | 更新日期: 2023-09-27 18:21:00

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

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

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

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

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

感谢您的阅读。

这个杂碎是什么来的

它在this上调用GetHashCode(),这很可能是基于您对MessageBox的使用的Windows窗体。

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

要想很好地解释GetHashCode()的作用,请参阅以下文章:

C#字符串的GetHashCode()是如何实现的?

你特别感兴趣的可能是

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

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