Static靜態(tài)字段,靜態(tài)方法,靜態(tài)代碼塊
壹 簡介
一些場景下會要求一個類的多個實例共享一個成員變量;有時候想定義一些不和具體對象關(guān)聯(lián)、不需要new就調(diào)用的方法
舉例:Console類的WriteLine,MessageBox的Show。這個時候就要使用靜態(tài)。
所謂靜態(tài)方法、靜態(tài)成員是類的方法、類的成員,他不歸屬于任何一個對象。因此不用new出來,直接類型.靜態(tài)方法()就能用了。
貳 特征
1、static變量不需要new就可以直接通過類名調(diào)用。static變量是共享的內(nèi)存空間,非static變量則是對象隔離的。
2、static 方法中無法使用this關(guān)鍵字,因為static獨立于對象存在,不是任何人的唯一。
3、static成員中只能訪問static成員,不能直接訪問非static成員。非static成員可以訪問static成員。
叁靜態(tài)代碼塊
1. 示例
classMyTest{ staticMyTest() { Console.WriteLine("靜態(tài)代碼塊"); } publicMyTest() { Console.WriteLine("構(gòu)造方法"); } }MyTest t1 = newMyTest(); MyTest t2 = newMyTest();2. 說明 1.靜態(tài)代碼塊,在類第一次被使用的時候執(zhí)行一次,只要用到類,哪怕沒new對象(比如只是聲明變量)也會被執(zhí)行,且只執(zhí)行一次。 2.靜態(tài)代碼塊,在構(gòu)造函數(shù)執(zhí)行之前執(zhí)行。3. 試題publicclassMyJingTaiDaimaKuai { publicstaticinti = test1();//最開始執(zhí)行 publicintage = test2();//new的時候先執(zhí)行成員變量的初始化,再執(zhí)行構(gòu)造函數(shù) staticMyJingTaiDaimaKuai() { Console.WriteLine("靜態(tài)代碼塊");//再執(zhí)行 } publicMyJingTaiDaimaKuai() { Console.WriteLine("構(gòu)造函數(shù)"); } publicstaticinttest1() { Console.WriteLine("test1"); return3; }
新聞熱點
疑難解答