【发布时间】:2010-09-28 19:04:45
【问题描述】:
如果我使用Hashtable,我可以编写如下代码:
object item = hashtable[key] ?? default_value;
无论key 是否出现在Hashtable 中,这都有效。
Dictionary<TKey. TValue> 无法做到这一点。如果字典中不存在密钥,则会抛出KeyNotFoundException。所以我必须写这样的代码:
MyClass item;
if (!(dict.TryGetValue(key, out item))
{
item = default_value;
}
我想知道这是为什么。 Dictionary<TKey, TValue> 只是 Hashtable 的包装。为什么要加上这个限制?
编辑:
从另一个角度来看 PopCatalin 的答案(见下文),如果字典的值是值类型,我上面编写的代码将不起作用。如果我使用的是Dictionary<int, int>,那么我喜欢 使用的代码如下所示:
int i = dict[key] ?? default_value;
这不会编译,因为dict[key] 不是可空或引用类型。
【问题讨论】:
标签: c# .net dictionary hashtable