什么时候在静态类中声明的对象会被垃圾收集?

Vam*_*msi 11 c# static garbage-collection dispose

 public static class stClass
{
    static Class1 obj = new Class1();

    public static int returnSomething()
    {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

当将在Class1实例objstClass获取垃圾回收,如果我调用静态函数stClass.returnSomething()在其他一些非静态类?

注:Class1不是静态的

Jus*_*tin 18

从来没有,因为obj没有实施IDisposable.

如果你的意思的时候会obj得到垃圾回收,那么答案是仍然没有-静态字段永远不会被垃圾收集等的对象,obj如果你设置引用只会变得符合垃圾收集obj为空(或其他物体),并没有其他的对该对象的引用:

obj = null;
Run Code Online (Sandbox Code Playgroud)

(或者如果您的app域已卸载/流程已结束)

  • "只有将obj设置为null才会收集垃圾" - 这有点误导.将obj设置为null时,该对象将仅变为*合格*用于垃圾回收.收集的实际时间是不确定的. (3认同)