本文不详细介绍Dictionary的用法,只介绍一些冷门知识。
1.我们经常遇到报错 KeyNotFoundException: The given key was not present in the dictionary.这是因为字典里面没有我们要找的key导致的,所以一般在使用字典前我们都要判断下 dic.ContainsKey(),看下key存不存在。当然也可以用 dic.TryGetValue()这个函数来避免掉上面的报错。
2. 从上面我们知道,当key不存在时,我们去拿字典的value就会报错,但是有一种写法,我们可以不去拿value,直接赋值,比如
dic[12] = 0;
这样写不会有任何问题,且等价于
if (!dic.ContainsKey(12))
dic.Add(12, 0);
else dic[12] = 0;
但这是为什么呢,我们看下dictionary的代码
public TValue this[TKey key]
{
get
{
int entry = this.FindEntry(key);
if (entry >= 0)
return this.entries[entry].value;
ThrowHelper.ThrowKeyNotFoundException();
return default (TValue);
}
set
{
this.Insert(key, value, false);