以dictionary关联容器为例,当对容器内容采用foreach遍历时不能直接更改键值的内容,这是由关联容器的机制所决定的。关联容器不允许在遍历的时候直接更改键值,因为这样做将导致容器本身内容改变,从而导致继续遍历出错。那么该如何更改关联容器的键值呢,下面推荐两种方法:
dictionary<Type1,Type2> dic = new dictionary<Type1,Type2>();
1.通过dictionary.Keys.ToArray()方法
Type1[] keyStr = dic.Keys.ToArray<Type1>();
for(int i = 0; i < ketStr.Length; i++)
{
dic[keyStr[i]]=......
}
2.通过dictionary.Keys.CopyTo()方法
Type1[] strKey = New Type1[dic.Keys.Count];
dic.Keys.CopyTo(strKey,0);
for(int j = 0; j < kstrKey.Length; j ++)
{
dic.ContainsKey(strKey[i])=......
}