我试图使用计数器从列表中删除某些东西,但它不适合我.
int i =0;
foreach(Rolls rl in rolls)
{
if(rl.getCourseId == courseId && rl.getStudentId == studentId)
{
rolls.RemoveAt(i) ;
}
i++;
}
Run Code Online (Sandbox Code Playgroud)
谁能明白为什么这可能不起作用.它给了我一个运行时异常:
"集合已被修改;枚举操作可能无法执行."
乔纳斯解释了为什么这不起作用,但我想我会提供另一种选择.
您可以使用List<T>.RemoveAll删除一个呼叫中的所有匹配项:
rolls.RemoveAll(rl => rl.getCourseId == courseId && rl.getStudentId == studentId);
Run Code Online (Sandbox Code Playgroud)
在您通过它时,您无法修改集合.尝试使用常规for循环(或while循环):
int i = 0;
while(i < myCollection.Count)
{
if(removeItem)
myCollection.RemoveAt(i);
else
++i;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |