i有一个列表正在传递到一个foreach循环中,该循环从列表中删除0或更多项目。基于条件,列表可能完全清空,从而导致零参考错误。处理这种情况的最佳方法是什么?
foreach (Item i in items)
{
if (i.property == condition)
{
items.Remove(i);
}
}
使用list.removeall方法
items.RemoveAll(i => i.property == condition)
它删除了与指定定义的条件匹配的所有元素 谓词。
您还可以通过创建新列表而没有匹配条件的项目(有时可能有用)
来留下原始列表(或其他集合)var newItems = items.Where(i => i.property != condition).ToList();