天天看點

c#類的初始化順序

<a href="http://www.cnblogs.com/ybhcolin/archive/2010/09/24/1834219.html">c#類的初始化順序</a>

類在初始化時的執行順序,依次如下:

1: 子類靜态變量

2: 子類靜态構造函數

3: 子類非靜态變量

4: 父類靜态變量

5: 父類靜态構造函數

6: 父類非靜态變量

7: 父類構造函數

8: 子類構造函數

對于靜态變量與靜态構造函數而言, 無論對一個類建立多少個執行個體,它的靜态成員都隻有一個副本。 也就是說,靜态變量與靜态構造函數隻初始化一次(在類第一次執行個體化時)

以下代碼: 

c#類的初始化順序

 1  class Class1

 2     {

 3         public static int Count = 0;

 4         static Class1()

 5         {

 6             Count++;

 7         }

 8         public Class1()

 9         {

10             Count++;

11         }

12     }

c#類的初始化順序

執行個體化代碼:

1 Class1 c = new Class1();

2 Class1 cc = new Class1();

3 Console.WriteLine(Class1.Count.ToString());

4 Console.Read();

當弟一次執行個體化時, Count值變成2,  當第二次執行個體化時, 則不會執行靜态構造函數與靜态變量.  此時Count的值變成3.   是以,最後結果Count值為3

c#類的初始化順序
c#類的初始化順序

View Code