gpt4 book ai didi

c# - 如何保持对对象的弱引用?

转载 作者:太空狗 更新时间:2023-10-30 00:44:30 25 4
gpt4 key购买 nike

(仅供引用:这个问题是半理论性的。这不是我明确打算做的事情。)

我希望能够保留对我创建的所有对象的引用。可能是这样的:

class Foo
{
private static List<Foo> AllMyFoos = new List<Foo>();

public Foo()
{
AllMyFoos.Add(this);
}
}

这样做的问题是,现在我的 Foos 都不会失去焦点并被垃圾收集。有没有办法在不妨碍垃圾收集器的情况下保留引用?

理想情况下,我只是列出仍在使用的 Foos,而不是所有曾经使用过的 Foos。

最佳答案

使用WeakReference - 它完全按照它应该做的去做。使用它时要小心 - 每次取消引用时都必须检查引用是否仍然有效

Tutorial .


Foo foo = AllMyFoos[index].Target as Foo;
if (foo == null)
{
// Object was reclaimed, so we can't use it.
}
else
{
// foo is valid. My theoretical curiosity can be satisfied
}

警告:仅仅因为该对象还没有被垃圾收集并不意味着没有人没有对其调用 Dispose,或者以其他方式放置它进入不准备再次使用的状态。

关于c# - 如何保持对对象的弱引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com