首页 新闻 会员 周边

WPF DependencyProperty 注册列表key唯一性问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2013-07-16 17:18

为了保证在DependencyProperty 的注册列表中键值唯一,注册时需要根据传入的名字和注册类的的HashCode取异或来生成Key。

请问根据传入的名字和注册类的HashCode取异或为什么能确保唯一性?

WPF
luguo3000的主页 luguo3000 | 初学一级 | 园豆:182
提问于:2013-01-30 12:21
< >
分享
所有回答(1)
0

首先 类的 HashCode 加上 属性的 HashCode 是不是就保证了唯一性?

由于整形相加可能溢出,所以通过异或来得到两个整形数字的唯一组合。

事实上可以用字典类直接使用名字和类的名称字符串来做键值,但是DependencyProperty内部是用的数组来维护的,所以它使用异或只是为了实现更高性能的字典而已。

Launcher | 园豆:45045 (高人七级) | 2013-01-30 15:30

不好意思啊,前端时间回家过年了,比如说类的hashcode是1101,属性的hashcode是1011。异或之后是0110。但是0110可以有很多种组合异或得出,比如另一个类的hashcode是1011而属性的是1101。那么这两组就对应到了一个相同的键值,不会存在这种情况吗?如果会,是怎么来做区分的?谢谢啊!

支持(0) 反对(0) luguo3000 | 园豆:182 (初学一级) | 2013-03-13 10:49

@luguo3000: 这种情况的确会发生,这就是哈希冲突,你百度下,应该就明白了。这里就不解释了。

支持(0) 反对(0) IdealAnt | 园豆:202 (菜鸟二级) | 2021-09-14 15:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册