从List <weakreference <t>&gt;中删除项目的正确方法是什么?

时间:2018-05-30 11:25:05

标签: c# weak-references

以下循环方法,使用TryGetTarget然后比较正确的方法吗?

void Remove<T>( List<WeakReference<T>> list, T toRemove ) where T : class {
    for(var i=0; i<list.Count; ++i) {
        if(list[i].TryGetTarget(out var el) && el==toRemove) {
            list.RemoveAt(i);
            break;
        }
    }
}

有更优雅或建议的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以将其缩短为:

list.RemoveAll(item => item.TryGetTarget(out var el) && el == toRemove);