我有一个列表被传递到foreach循环中,从列表中删除0个或更多项。根据条件,列表可能被完全清空,从而导致空引用错误。处理这种情况的最佳方法是什么?
foreach (Item i in items)
{
if (i.property == condition)
{
items.Remove(i);
}
}
答案 0 :(得分:1)
使用List.RemoveAll方法
items.RemoveAll(i => i.property == condition)
删除符合指定条件的所有元素 谓语。
您还可以通过创建新列表来保持原始列表(或其他集合)不受影响,而不包含符合条件的项目(有时可能有用)
var newItems = items.Where(i => i.property != condition).ToList();