假设我有这个:
public static class FooKeeper
{
public static List<Foo> foos = new List<Foo>();
}
public class Foo
{
public Foo()
{
FooKeeper.foos.Add(this);
}
}
我想这样做,当Foo类型的对象被垃圾收集时,我会手动将它从FooKeeper类的列表中删除。当然这没有意义,因为Foo对象不能被垃圾收集,因为FooKeeper总是会引用它们。
有没有办法告诉GC忽略FooKeeper中列表的引用?或其他方式?
答案 0 :(得分:3)
使用WeakReference来实现您的目标。
public static List<WeakReference<Foo>> foos = new List<WeakReference<Foo>>();