C#的修飾符:static
創(chuàng)新互聯(lián)公司成立于2013年,先為上思等服務(wù)建站,上思等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為上思企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
聲明屬于類型本生而不屬于實體對象的成員。
一、非靜態(tài)類
1、非靜態(tài)類可以包含靜態(tài)的方法、字段、屬性或事件。 靜態(tài)的類成員屬于類級別的,不屬于類的任何實例,類外不可以通過類的實體對象來調(diào)用靜態(tài)變量,要用類名來調(diào)用,(如現(xiàn)在有一個Student 類,這個類里有一個static string name,當(dāng)其他類需要調(diào)它的時候就要用Student.name);無論對一個類創(chuàng)建多少個實例,它的靜態(tài)成員都只有一個副本,類里的所有成員都可以訪問它,可以改變它的值。 靜態(tài)方法和屬性不能訪問其包含類型中的非靜態(tài)字段和事件,并且不能訪問任何對象的實例變量(除非在方法參數(shù)中顯式傳遞)。
靜態(tài)字段有兩個常見的用法:一是記錄已實例化對象的個數(shù);二是存儲必須在所有實例之間共享的值。
靜態(tài)方法可以被重載但不能被重寫,因為它們屬于類,不屬于類的任何實例。
2、靜態(tài)成員在第一次被訪問之前并且在調(diào)用靜態(tài)構(gòu)造函數(shù)(如有存在)之前進(jìn)行初始化。 靜態(tài)構(gòu)造函數(shù)用于初始化任何 靜態(tài) 數(shù)據(jù),或用于執(zhí)行僅需執(zhí)行一次的特定操作。 在創(chuàng)建第一個實例或引用任何靜態(tài)成員之前,將自動調(diào)用靜態(tài)構(gòu)造函數(shù)。
public class Students
{
//定義靜態(tài)變量
public staic int Num;
//靜態(tài)構(gòu)造函數(shù)
static Students()
{
Num = 30;
}
}
3、靜態(tài)構(gòu)造函數(shù)具有以下特點:
靜態(tài)構(gòu)造函數(shù)既沒有訪問修飾符,也沒有參數(shù)。用于對靜態(tài)字段、只讀字段等的初始化。
在創(chuàng)建第一個實例或引用任何靜態(tài)成員之前,將自動調(diào)用靜態(tài)構(gòu)造函數(shù)來初始化類。類的靜態(tài)構(gòu)造函數(shù)在給定應(yīng)用程序域中至多執(zhí)行一次。
靜態(tài)構(gòu)造函數(shù)是不可繼承的,而且不能被直接調(diào)用。
在程序中,用戶無法控制何時執(zhí)行靜態(tài)構(gòu)造函數(shù)。
如果沒有編寫靜態(tài)構(gòu)造函數(shù),而這時類中包含帶有初始值設(shè)定的靜態(tài)字段,那么編譯器會自動生成默認(rèn)的靜態(tài)構(gòu)造函數(shù)。
4、靜態(tài)變量的幾點說明:
(1)靜態(tài)方法和靜態(tài)數(shù)據(jù)成員相當(dāng)于共享變量,只有“一份”,為該類的所有對象所共有,因而在需要共享數(shù)據(jù)時,定義這種類型時很好的選擇。 一但定義一個類后(不一定要實例化對象)該類的所有靜態(tài)成員就載入內(nèi)存(并不是程序啟動,就裝入內(nèi)存,沒有定義該類時它不會載入內(nèi)存) 靜態(tài)成員的作用域與它所屬的類的作用域相同。
(2)方法內(nèi)部的靜態(tài)變量,執(zhí)行完靜態(tài)變量值不消失,再次執(zhí)行此對象的方法時,值仍存在,它不是在棧中分配的,是在靜態(tài)區(qū)分析的,(共有兩種變量存儲在靜態(tài)存儲區(qū):全局變量和static變量)這是與局部變量最大的區(qū)別。
(3)由于靜態(tài)成員函數(shù)存在于類一級,并且不是對象的一部分,因此沒有 this 指針。在靜態(tài)方法中引用 this 是錯誤的。
二、靜態(tài)類:
聲明為static,它僅包含靜態(tài)成員,不能用new靜態(tài)類的實例。使用靜態(tài)類來包含不與特定對象關(guān)聯(lián)的方法。
功能:僅包含靜態(tài)成員,不能被實例化,是密封的,不能包含實例構(gòu)造函數(shù),可包含靜態(tài)構(gòu)造函數(shù)以分配初始值或設(shè)置某個靜態(tài)變量。
優(yōu)點:編譯器能夠執(zhí)行檢查以確保不致偶然地添加勢力成員。編譯器將保證不會創(chuàng)建此類的實例。