【发布时间】:2012-07-04 10:07:23
【问题描述】:
我有以下代码向字典中添加一些值。 Linq.Contains 方法可以抛出 System.InvalidOperationException "Collection was modified; enumeration operation may not execute." 什么时候将项目添加到字典中?
private static object _lock = new object();
private static Dictionary<Type, A> _dic = new Dictionary<Type, A>();
public static AddNewValue(Type t, A value)
{
if ( !_dic.Keys.Contains( t ) )
{
lock ( _lock )
{
if ( !_dic.Keys.Contains( t ) )
{
_dic.Add( t, value );
}
}
}
}
【问题讨论】:
-
你应该使用
_dic.ContainsKey。我认为使用_dic.Keys.Contains违背了使用字典的全部目的。
标签: c# linq exception collections dictionary