C# foreach是只读遍历
2022-11-30 本文已影响0人
小ocean
先贴一段代码:执行后报错(集合已修改;可能无法执行枚举操作。)
foreach (var data in dataDic.Values)
{
//排除已经清理的活动数据
if (data.ClearStatus)
{
dataDic.Remove(data.ActivityId);
continue;
}
}
经过查找发现C# 我们不能在foreach中对List以及Dictionary等进行元素的添加和删除操作;
如果要对List以及Dictionary等进行元素的添加和删除操作,可以使用for
// List 使用方式-
List<int> oneList = new List<int>() { 0, 1, 2, 3, 4, 5 };
for (var i = 0; i < oneList.Count(); i++)
{
oneList.Remove(i);
}
// dic 使用方式-
Dictionary<int, int> oneDic = new Dictionary<int, int> { { 1, 100 }, { 2, 200 } };
var keysList = oneDic.Keys.ToList();
foreach (var key in keysList)
{
oneDic.Remove(key);
}
我们不能在foreach中对List以及Dictionary等进行元素的添加和删除操作;