2013-04-29 27 views
1

我在c#應用程序中多次使用過靜態類和靜態成員,但我在內部思考過很多,昨天有人問我爲什麼靜態成員首先在內存中加載?爲什麼靜態成員在內存中首先加載

這是正確的問題嗎?如果是的話請解釋我爲什麼。

感謝,

+0

這是一個很好的閱讀:http://www.codeproject.com/Articles/15269/Static-Keyword-Demystified – t3hn00b 2013-04-29 06:55:29

+0

靜態成員存在,直到[應用程序域](http://msdn.microsoft.com/en- us/library/ms173138(v = vs.80).aspx)仍然加載。 – 2013-04-29 06:56:50

+0

面試問題? – AksharRoop 2013-04-29 08:27:30

回答

2

靜態類在加載類時被初始化。它在任何對象被創建之前被初始化。因爲它不需要任何對象進行初始化。可以有任何數量的靜態類和靜態字段。它們都是首先初始化的,以便它們可以隨時隨地使用。

希望解釋有幫助。

3

靜態的,或者說類字段,存儲類本身內不需要類的實例進行訪問。一旦它被第一次使用,該類就會被加載到內存中,並且一旦類被加載,類字段就可用。

2

靜態成員是在運行時分配的成員,它的內存尋址是不可變的。我的意思是,一旦靜態成員被初始化,它將一直保留在內存中的相同位置,直到程序結束。

這就是說,靜態成員在運行時初始化,但並不是初始化的第一件事情。爲了進一步解釋,取決於你的應用程序結構,諸如編譯時間常量字符串和其他常量之類的東西可以被分配爲「第一」,這意味着在應用程序的存儲器尋址開始時。

這樣做的一個很好的特性是速度大大提高,因爲沒有必要爲正確的成員/方法調用內存「搜索」內存。

相關問題