对象的可执行代码是为所有实例存储一次还是为每个实例存储一次?
换句话说,对象的代码是存储一次并重复使用,还是每个实例都有自己的副本?
答案 0 :(得分:2)
代码是共享的,静态数据也是如此。
只有特定于实例的类的部分才会保持独立。
答案 1 :(得分:2)
这里有一些细节,取自http://msdn.microsoft.com/en-us/magazine/cc188793.aspx
“每当在堆中创建一个对象时,每个对象都会获得两个与之关联的额外开销字段。第一个开销字段MethodTablePointer包含该类型方法表的内存地址。基本上,这个指针使得获取有关堆中任何对象的类型信息。实际上,当您在内部调用System.Object的GetType方法时,此方法将跟随对象的MethodTablePointer字段以确定该对象的类型。“
因此,您的实例不会复制任何此类共享类型的数据/代码。相反,它有一个指向它的指针。