Buh*_*ica 4 c# garbage-collection weak-references
(仅供参考:这个问题是半理论的.这不是我明确计划做的事情.)
我希望能够保留对我创建的所有对象的引用.也许是这样的:
class Foo
{
private static List<Foo> AllMyFoos = new List<Foo>();
public Foo()
{
AllMyFoos.Add(this);
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的麻烦在于,现在我的所有Foos都不会失去焦点并被垃圾收集.有没有办法在不妨碍垃圾收集器的情况下保持拒绝?
理想情况下,我只是一个仍在使用的Foos列表,而不是所有使用过的Foos.
使用WeakReference - 它完全符合它的预期.使用它时要小心 - 每次取消引用它时,都必须检查引用是否仍然有效.
教程.
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
}
Run Code Online (Sandbox Code Playgroud)
警告:仅仅因为对象尚未被垃圾收集并不意味着有人没有对其进行调用Dispose,或者以某种其他方式将其置于不准备再次使用的状态.
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |