第一个问题好回答,因为字符串在.net体系里是个对象,有很多方法,属性的。如果仅仅记录一个“字符串”,就没法调用String对象的很多方法了。
第二个问题没太看明白。你的意思是怎么检索哪些key已经存在于hashtable中了吗?这个我就不知道了,没有研究过过hash表的实现代码。有空看下
谢谢回答,第二个问题其实是我没弄懂第一个问题的一个乌龙,请无视~
第一个问题,在hash表中存入相同引用的作用 : 就是为了给创建相同String字符串的不同对象返回同一个引用,这是字符串驻留的机制,所以这是必要的。
第二个问题,hashtale 中key是一个值, 在哈希表中是通过一个特定的算法,将每个key通过一个函数计算后得到一个不同的值,CLR 中的哈希表中的key为什么需要去分配内存呢?,只要通过key 计算得到其映射的value的地址就可以了。