现在的位置: 首页 > 综合 > 正文

Hashtable和Dictionary的一个注意点

2012年01月06日 ⁄ 综合 ⁄ 共 644字 ⁄ 字号 评论关闭

       在园子里面看到这样一个话题:Hashtable与Dictionary<TKey,TValue>的一个有趣考题。代码如下:

View Code

1 Hashtable与其泛型实现Dictionary<TKey,TValue>进行如下的判断是否正确?
2
3 Hashtable ht = new Hashtable();
4
5 if (ht["name1"] == null)
6
7 {
8
9 Console.WriteLine("不存在键值为name1的值");
10
11 }
12
13
14 Dictionary<string, string> dt = new Dictionary<string, string>();
15
16 if (dt["name1"] == null)
17
18 {
19
20 Console.WriteLine("不存在键值为name1的值");
21
22 }

       上面的代码经过运行后发现,在dt["name1"]==null这里会抛出异常,而在hashtable不会。需要注意的几点:

       1.Msdn对于Dictionary和Hashtable的解释都是值可以为null而键不能为null。因此使用dt["name1"]==null来判断是否存在键值为name1的值是不合理的,因为有一种情况,就是键值为name1的值存在,但是等于null,应该使用dt.ContainsKey方法来进行判断。对于ht也是一样的。

       2.对于dt要尝试获根据某个键取某个值应该使用dt.TryGetValue方法。

抱歉!评论已关闭.