从列表中删除所有项目

本文关键字:项目 删除 列表 | 更新日期: 2023-09-27 18:29:50

我想从我的列表中删除所有元素:

foreach (Session session in m_sessions)
{
    m_sessions.Remove(session);
}

在最后一个元素中,我得到了一个异常:未知操作。

有人知道为什么吗?

我应该如何删除所有元素?写这样的东西是可以的:

m_sessions = new List<Session>();

从列表中删除所有项目

使用foreach迭代List<T>时,不允许修改它。请改用m_sessions.Clear()

虽然你可以写m_sessions = new List<Session>(),但这不是一个好主意。首先,创建一个新列表只是为了清除现有列表是浪费的。更重要的是,如果您对该列表有其他引用,那么它们将继续引用旧列表。尽管如此,正如@dasblinkenlight所指出的,m_sessions可能是一个私人成员,您不太可能有其他引用。不管怎样,Clear()是清除List<T>的规范方法。

永远不要修改正在使用foreach迭代的集合。插入、删除和重新排序是不允许的。但是,您可以修改foreach变量(在本例中为session)。

在这种情况下,使用

m_sessions.Clear();

并消除环路。

试试这个:

m_sessions.RemoveRange ( 0 , m_sessions.Count() );