Ped*_*Luz 2 c# foreach dictionary
如果我想循环一个字典(键,值)...为什么我不能在循环中添加一个新的键值对?
Dictionary<string, string> persons = new Dictionary<string, string>();
persons.Add("roger", "12");
persons.Add("mary", "13");
foreach (KeyValuePair<string,string> person in persons)
{
Console.WriteLine("Name: " + person.Key + ", Age: " + person.Value);
persons.Add("Xico", "22");
}
Run Code Online (Sandbox Code Playgroud)
tva*_*son 21
这是因为构造枚举器的方式.
来自MSDN Dictionary.Enumerator:
只要集合保持不变,枚举器仍然有效.如果对集合进行了更改(例如添加,修改或删除元素),则枚举数将无法恢复,并且其行为未定义.
不过,这很容易解决这个问题.只需复制一个字典(或它的键)并迭代它,添加/删除/等.根据需要从原始字典.
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |