从列表中删除所有项目
本文关键字:项目 删除 列表 | 更新日期: 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() );