c#的Dictionary用foreach遍历时是不能修改的,
可以这样遍历:
for (int i = 0; i < 5; i++)
{
dict.Add(i, i.ToString());
}
for (int i = 0; i < dict.Count; i++)
{
var item = dict.ElementAt(i);
int k = item.Key;
string v = item.Value;
}
但是如果在里面要删除某些元素的话,直接Remove后字典的长度会改变,这样i++后ElementAt(i)就相当于跳过了一个元素,因此i++应该写在里面,如果删除就不让i自增,比如我要删除key为3或4的元素:
for (int i = 0; i < dict.Count;)
{
var item = dict.ElementAt(i);
Console.WriteLine(item.Key.ToString() + " " + item.Value.ToString());
if (item.Key == 3 || item.Key == 4)
{
dict.Remove(item.Key);
}
else
{
i++;
}
}