c# - .NET 垃圾收集器能否收集作为类成员的对象?

标签 c# .net garbage-collection

我有一个类,它包含一个指向继承自 IDisposable 的对象的指针

class Foo 
{
    private Bar bar;

    private test() 
    {
        bar = CreateBarFactory();
    }

};

bar 永远不会在 test() 中设置后使用;

我想知道即使 Foo 实例仍然存在,是否允许 GC 处理 bar?

如果是这样,我有办法避免这种情况吗? bar 是指向包含 ref 计数的对象的指针,如果它是 Disposed() 则释放 ref 导致某些功能被禁用

最佳答案

如果 foo 的实例仍然存在(即有人持有对它的引用......使其保持事件状态),则不会收集 bar。它将被 GC 视为“可达”,即正在使用中。

可达对象的成员也被认为是可达的。

关于c# - .NET 垃圾收集器能否收集作为类成员的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13667090/

相关文章:

c# - 一个对象是否有可能 "pin"本身并避免垃圾收集?

c# - 如何只允许将一个文件放入列表框控件c#

c# - 从 Active Directory 中检索包含电子邮件地址的 C# 列表

c# - System.Diagnostics.Process - Del 命令

c# - .Net SslStream 写/读问题

java - 避免多次垃圾收集执行

java - 对仅使用原语编码的 Java 程序的引用

c# - 将图像效果(灰度)应用到屏幕(PC监视器)

c# - WinForms 应用程序的体系结构?

.net - 我应该使用哪种依赖注入(inject)工具?