我正在编写一个多线程下载管理器,其中下载信息由我编写的一个类(称为 DownloadOperation)管理。下载保存在列表中(称为下载)。当类 (queryCompleted) 中的函数返回 true 但发现无法从 foreach
循环中的列表中删除元素时,我需要从列表中删除对象。达到相同效果的最佳方法是什么?我是 C# 的新手,请原谅我的愚蠢。
private void removeInactiveDownloads()
{
foreach (DownloadOperation dl in download)
{
if (dl.queryComplete() == true)
{
// if download is no longer in progress it is removed from the list.
download.Remove(dl);
}
}
}
最佳答案
List<T>
有方法
public int RemoveAll(
Predicate<T> match
)
删除与谓词匹配的所有元素:http://msdn.microsoft.com/en-us/library/wdka673a.aspx
因此我建议如下:
download.RemoveAll(x => x.queryComplete());
(请注意,不需要 == true
,因为 .queryComplete()
已经返回 true 或 false!)
关于c# - 满足条件时从列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437498/