以下循环方法,使用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;
}
}
}
有更优雅或建议的方法吗?
答案 0 :(得分:1)
您可以将其缩短为:
list.RemoveAll(item => item.TryGetTarget(out var el) && el == toRemove);