有一個類0。0有一個公共的A屬性(只有g(shù)et方法,返回另一個類型的靜態(tài)實(shí)例的屬性[類型.靜態(tài)實(shí)例.屬性]),及一個公共的B字段(直接new 一個對象)。當(dāng)實(shí)例化類型0時(直接new),查看實(shí)例化的o對象,看到B字段的各個屬性是null,這是正常的,因?yàn)闆]賦值。但是看到對象A的各個屬性卻不為null。我奇怪的是不知道什么時候給A賦的值,在類0中給屬性A和字段B上打斷點(diǎn),發(fā)現(xiàn)斷點(diǎn)可以執(zhí)行到B字段,但是A屬性的斷點(diǎn)并沒有執(zhí)行,所以奇怪怎么會看到A各個屬性的值?
2 回答

翻閱古今
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個贊
靜態(tài)字段如果沒有初始化語句,在程序剛開始的時候就會被初始化為默認(rèn)值,整型0,布爾false,引用為null,我們知道程序有一個唯一的入口Main()函數(shù),可以理解為在還沒有進(jìn)入Main()函數(shù)的時候,靜態(tài)字段就已經(jīng)初始化好了,而且確實(shí)也就是這樣,它一旦被初始化了就會一直存在,直到我們的應(yīng)用程序結(jié)束了,這點(diǎn)不像實(shí)例字段,實(shí)例字段在實(shí)例一旦銷毀就不存在了,靜態(tài)字段以及靜態(tài)成員有一個特定的內(nèi)存區(qū)(我理解為靜態(tài)內(nèi)存區(qū)),這塊區(qū)域就像非托管資源一樣,不由我們的CLR管理,CLR的垃圾回收機(jī)制不會回收它,可以理解為它就像放在那一直被占用一樣,不是垃圾.

達(dá)令說
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個贊
據(jù)說靜態(tài)類,靜態(tài)成員在初次使用之前會被CLR初始化,然后一直存在在內(nèi)存里。
- 2 回答
- 0 關(guān)注
- 417 瀏覽
添加回答
舉報
0/150
提交
取消