有一个类0。0有一个公共的A属性(只有get方法,返回另一个类型的静态实例的属性[类型.静态实例.属性]),及一个公共的B字段(直接new 一个对象)。当实例化类型0时(直接new),查看实例化的o对象,看到B字段的各个属性是null,这是正常的,因为没赋值。但是看到对象A的各个属性却不为null。我奇怪的是不知道什么时候给A赋的值,在类0中给属性A和字段B上打断点,发现断点可以执行到B字段,但是A属性的断点并没有执行,所以奇怪怎么会看到A各个属性的值?
2 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
静态字段如果没有初始化语句,在程序刚开始的时候就会被初始化为默认值,整型0,布尔false,引用为null,我们知道程序有一个唯一的入口Main()函数,可以理解为在还没有进入Main()函数的时候,静态字段就已经初始化好了,而且确实也就是这样,它一旦被初始化了就会一直存在,直到我们的应用程序结束了,这点不像实例字段,实例字段在实例一旦销毁就不存在了,静态字段以及静态成员有一个特定的内存区(我理解为静态内存区),这块区域就像非托管资源一样,不由我们的CLR管理,CLR的垃圾回收机制不会回收它,可以理解为它就像放在那一直被占用一样,不是垃圾.
- 2 回答
- 0 关注
- 365 浏览
添加回答
举报
0/150
提交
取消