为了保证在DependencyProperty 的注册列表中键值唯一,注册时需要根据传入的名字和注册类的的HashCode取异或来生成Key。
请问根据传入的名字和注册类的HashCode取异或为什么能确保唯一性?
首先 类的 HashCode 加上 属性的 HashCode 是不是就保证了唯一性?
由于整形相加可能溢出,所以通过异或来得到两个整形数字的唯一组合。
事实上可以用字典类直接使用名字和类的名称字符串来做键值,但是DependencyProperty内部是用的数组来维护的,所以它使用异或只是为了实现更高性能的字典而已。
不好意思啊,前端时间回家过年了,比如说类的hashcode是1101,属性的hashcode是1011。异或之后是0110。但是0110可以有很多种组合异或得出,比如另一个类的hashcode是1011而属性的是1101。那么这两组就对应到了一个相同的键值,不会存在这种情况吗?如果会,是怎么来做区分的?谢谢啊!
@luguo3000: 这种情况的确会发生,这就是哈希冲突,你百度下,应该就明白了。这里就不解释了。