概述C#靜態構造函數
作者:佚名
本文介紹如果沒有編寫C#靜態構造函數,而這時類中包含帶有初始值設定的靜態字段,那么編譯器會自動生成默認的C#靜態構造函數。
1.用于對靜態字段、只讀字段等的初始化。
2.添加static關鍵字,不能添加訪問修飾符,因為C#靜態構造函數都是私有的。
3.類的靜態構造函數在給定應用程序域中至多執行一次:只有創建類的實例或者引用類的任何靜態成員才激發靜態構造函數
4.C#靜態構造函數是不可繼承的,而且不能被直接調用。
5.如果類中包含用來開始執行的 Main 方法,則該類的靜態構造函數將在調用 Main 方法之前執行。任何帶有初始值設定項的靜態字段,則在執行該類的靜態構造函數時,先要按照文本順序執行那些初始值設定項。
6.如果沒有編寫C#靜態構造函數,而這時類中包含帶有初始值設定的靜態字段,那么編譯器會自動生成默認的C#靜態構造函數。
2.添加static關鍵字,不能添加訪問修飾符,因為C#靜態構造函數都是私有的。
3.類的靜態構造函數在給定應用程序域中至多執行一次:只有創建類的實例或者引用類的任何靜態成員才激發靜態構造函數
4.C#靜態構造函數是不可繼承的,而且不能被直接調用。
5.如果類中包含用來開始執行的 Main 方法,則該類的靜態構造函數將在調用 Main 方法之前執行。任何帶有初始值設定項的靜態字段,則在執行該類的靜態構造函數時,先要按照文本順序執行那些初始值設定項。
6.如果沒有編寫C#靜態構造函數,而這時類中包含帶有初始值設定的靜態字段,那么編譯器會自動生成默認的C#靜態構造函數。
- usingSystem;
- classA
- {
- publicstaticintX;
- staticA()//④執行完后返回到③
- {
- X=B.Y+1;
- Console.WriteLine("staticA()");
- }
- }
- classB
- {
- publicstaticintY=A.X+1;//③調用了A的靜態成員,
- //轉到A的靜態構造函數---->
- staticB()//②如果帶有初始值設定項的靜態字段,
- //執行該類的靜態構造函數時,
- //先要按照文本順序執行那些初始值設定項。
- //轉到初始值設定項---->
- {
- Console.WriteLine("staticB()");
- }
- staticvoidMain()//①程序入口,
- //如果類中包含用來開始執行的Main方法,
- //該類的靜態構造函數將在調用Main方法之前執行。
- //轉到B的靜態構造函數---->
- {
- Console.WriteLine("X={0},Y={1}",A.X,B.Y);//⑤輸出結果
- Console.ReadLine();
- }
- }
【編輯推薦】
責任編輯:佚名
來源:
IT168