对象在foreach循环中清空

时间:2017-02-16 22:45:42

标签: c#

我有一个列表被传递到foreach循环中,从列表中删除0个或更多项。根据条件,列表可能被完全清空,从而导致空引用错误。处理这种情况的最佳方法是什么?

foreach (Item i in items)
{
    if (i.property == condition)
    {
        items.Remove(i);
    }
}

1 个答案:

答案 0 :(得分:1)

使用List.RemoveAll方法

items.RemoveAll(i => i.property == condition)

删除符合指定条件的所有元素  谓语。

您还可以通过创建新列表来保持原始列表(或其他集合)不受影响,而不包含符合条件的项目(有时可能有用)

var newItems = items.Where(i => i.property != condition).ToList();