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