从 List<WeakReference<T>> 中删除项目的正确方法是什么?
What is the proper way to remove items from a List<WeakReference<T>>?
下面的循环方式,使用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;
}
}
}
是否有更优雅或建议的方法来做到这一点?
您可以将其缩短为:
list.RemoveAll(item => item.TryGetTarget(out var el) && el == toRemove);
下面的循环方式,使用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;
}
}
}
是否有更优雅或建议的方法来做到这一点?
您可以将其缩短为:
list.RemoveAll(item => item.TryGetTarget(out var el) && el == toRemove);