我想知道HashCode是否总是一样的.
例如:
String myString = "my super string";
Int myHashCode = myString.GetHashCode();
Run Code Online (Sandbox Code Playgroud)
将myHashCode始终是相同的值?在任何计算机上,任何时间,任何一切?
我是否可以信赖它,将其用作自定义唯一标识(对于相同的对象类型)
不,计算机和基本系统版本之间的值可能会发生变化.
在给定的程序运行期间,您应该只依赖它来保持不变.
从文档:
GetHashCode返回的值取决于平台.它在32位和64位版本的.NET Framework上有所不同.它也可以在.NET Framework版本之间有所不同.
警告:哈希代码旨在在基于哈希表的集合中进行有效插入和查找.哈希码不是永久值.为此原因:
- 不要序列化哈希码值或将它们存储在数据库中.
我是否可以信赖它,将其用作自定义唯一标识?
即使在单个程序运行期间,这也不起作用,因为哈希码确实发生冲突(对于不等对象,相同的哈希码).
再次引用文档:
- 不要测试哈希码的相等性以确定两个对象是否相等.(不等的对象可以具有相同的哈希码.)要测试相等性,请调用ReferenceEquals或Equals方法.
| 归档时间: |
|
| 查看次数: |
1237 次 |
| 最近记录: |