首页新闻找找看学习计划

调试时对象的属性和字段的问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-06-26 10:10

有一个类0。0有一个公共的A属性(只有get方法,返回另一个类型的静态实例的属性[类型.静态实例.属性]),及一个公共的B字段(直接new 一个对象)。当实例化类型0时(直接new),查看实例化的o对象,看到B字段的各个属性是null,这是正常的,因为没赋值。但是看到对象A的各个属性却不为null。我奇怪的是不知道什么时候给A赋的值,在类0中给属性A和字段B上打断点,发现断点可以执行到B字段,但是A属性的断点并没有执行,所以奇怪怎么会看到A各个属性的值?

忽然明白的主页 忽然明白 | 初学一级 | 园豆:80
提问于:2012-06-14 11:49
< >
分享
最佳答案
0

静态字段如果没有初始化语句,在程序刚开始的时候就会被初始化为默认值,整型0,布尔false,引用为null,我们知道程序有一个唯一的入口Main()函数,可以理解为在还没有进入Main()函数的时候,静态字段就已经初始化好了,而且确实也就是这样,它一旦被初始化了就会一直存在,直到我们的应用程序结束了,这点不像实例字段,实例字段在实例一旦销毁就不存在了,静态字段以及静态成员有一个特定的内存区(我理解为静态内存区),这块区域就像非托管资源一样,不由我们的CLR管理,CLR的垃圾回收机制不会回收它,可以理解为它就像放在那一直被占用一样,不是垃圾.

收获园豆:10
ajie1166 | 菜鸟二级 |园豆:249 | 2012-06-23 18:19
其他回答(2)
0

据说静态类,静态成员在初次使用之前会被CLR初始化,然后一直存在在内存里。

写代码的小2B | 园豆:4346 (老鸟四级) | 2012-06-14 12:43
0

靜態字段,是在代碼調用之前,系統初始化的。

無限遐想 | 园豆:3740 (老鸟四级) | 2012-06-14 14:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册