考虑以下简单的课程A
:
class A
{
public static int b = 10;
}
{
var objA = new A();
A.b = 30;
Console.WriteLine("Before GC Collect!");
Console.WriteLine(A.b);
objA = null;
GC.Collect(); //A is GC Collected
var objB = new A();
Console.WriteLine("After GC Collect!");
Console.WriteLine(A.b);
}
注意:成员b
为static
我期待得到30 before GC collection
和10 after GC Collection
当object is GC Collected
, 表示与该类关联的所有静态实例都没有销毁时?
为什么这样?有什么想法吗?
答案 0 :(得分:3)
删除类的实例后,该实例中的所有实例成员都将被删除。
当删除一个类的一个实例时,该类的所有其他实例都不受影响。
类的静态成员独立于类的实例。类的静态成员在应用程序中存在一次,无论该类有多少实例。静态成员在任何实例之前都存在,并且在所有实例都消失后仍然存在。