我想删除列表中的所有元素:
foreach (Session session in m_sessions)
{
m_sessions.Remove(session);
}
Run Code Online (Sandbox Code Playgroud)
在最后一个元素中,我得到一个异常:UnknownOperation.
谁知道为什么?
我该如何删除所有元素?写这样的东西是可以的:
m_sessions = new List<Session>();
Run Code Online (Sandbox Code Playgroud)
Dav*_*nan 42
你不能修改一个List<T>while迭代它foreach.请m_sessions.Clear()改用.
虽然你可以写m_sessions = new List<Session>()这个不是一个好主意.首先,创建新列表以清除现有列表是浪费的.更重要的是,如果您对列表有其他引用,那么他们将继续引用旧列表.虽然,正如@dasblinkenlight指出的那样,m_sessions它可能是一个私有成员,你不太可能有其他的列表引用.Clear()无论如何,是清除a的规范方式List<T>.
Ken*_*rey 11
永远不要修改正在迭代的集合foreach.插入,删除和重新排序都是禁止的.但是,您可以修改foreach变量(session在本例中).
在这种情况下,使用
m_sessions.Clear();
Run Code Online (Sandbox Code Playgroud)
并消除循环.
| 归档时间: |
|
| 查看次数: |
65615 次 |
| 最近记录: |