忽略垃圾收集的特定参考

时间:2016-08-21 17:59:03

标签: c# garbage-collection

假设我有这个:

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中列表的引用?或其他方式?

1 个答案:

答案 0 :(得分:3)

使用WeakReference来实现您的目标。

public static List<WeakReference<Foo>> foos = new List<WeakReference<Foo>>();