有一個類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 關注
- 418 瀏覽
添加回答
舉報
0/150
提交
取消