为了账号安全,请及时绑定邮箱和手机立即绑定

hashCode的作用是什么?它独特吗?

hashCode的作用是什么?它独特吗?

C#
慕斯709654 2019-11-25 15:20:04
我注意到getHashCode()WP7中的每个控件,项目都有一个方法,该方法返回一个数字序列。我可以使用此哈希码来识别商品吗?例如,我想识别设备中的图片或歌曲,并检查其位置。如果为特定项目指定的哈希码是唯一的,则可以执行此操作。您能帮我解释一下hashCode及其getHashCode()用途吗?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

MSDN说:


哈希码是一个数值,用于在相等性测试期间标识对象。它也可以用作集合中对象的索引。


GetHashCode方法适用于哈希算法和数据结构(例如哈希表)。


GetHashCode方法的默认实现不能保证不同对象的唯一返回值。此外,.NET Framework不保证GetHashCode方法的默认实现,并且它返回的值在.NET Framework的不同版本之间将相同。因此,此方法的默认实现不得用作哈希目的的唯一对象标识符。


GetHashCode方法可以被派生类型覆盖。值类型必须重写此方法,以提供适用于该类型的哈希函数并在哈希表中提供有用的分布。为了唯一,哈希码必须基于实例字段或属性的值,而不是静态字段或属性。


在Hashtable对象中用作键的对象还必须重写GetHashCode方法,因为这些对象必须生成自己的哈希码。如果用作键的对象不能提供GetHashCode的有用实现,则可以在构造Hashtable对象时指定哈希码提供程序。在.NET Framework 2.0版之前,哈希码提供程序基于System.Collections.IHashCodeProvider接口。从2.0版开始,哈希码提供程序基于System.Collections.IEqualityComparer接口。


基本上,存在哈希码以使哈希表成为可能。

保证两个相等的对象具有相等的哈希码。不保证

两个不相等的对象具有不相等的哈希码(称为冲突)。


查看完整回答
反对 回复 2019-11-25
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

GetHashCode()用于帮助支持将对象用作哈希表的键。(Java等中也存在类似的东西)。目标是让每个对象都返回不同的哈希码,但这通常不能绝对保证。这是必需的,虽然这两个逻辑上相等的对象返回相同的散列码。

典型的哈希表实现从hashCode值开始,采用模数(因此将值限制在一个范围内),并将其用作“存储桶”数组的索引。


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 474 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信