C# 靜態類(static class)
阿新 • • 發佈:2018-12-26
類可以宣告為 static 的,以指示它僅包含靜態成員。
靜態類在載入包含該類的程式或名稱空間時,由 .NET Framework 公共語言執行庫 (CLR;特指:C#語言) 自動載入。
使用靜態類來包含不與特定物件關聯的方法,具有通用性
注意事項:
(1) 不能使用 new 關鍵字建立靜態類的例項;
(2) 僅包含靜態成員;
(3) 不能被例項化;
(4) 密封的,不能被繼承;
(5) 不能包含例項建構函式,但可以包含靜態建構函式;
關於靜態建構函式的補充:
(1) 靜態建構函式不可繼承;
(2) 靜態建構函式可以用於靜態類,也可用於非靜態類;
(3) 靜態建構函式無訪問修飾符、無引數
(4) 靜態建構函式不可被直接呼叫,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動執行,並且只執行一次。
例項分析:
剛開始對靜態類不太熟悉,所以寫出瞭如下的程式碼:
- publicclass ClassA
- {
- publicstaticstring AppName = "hello, this is a static class test";
- publicstaticint num = 5;
- public ClassA()
- {
- num = 15;
- }
-
public
- {
- return num;
- }
- }
- staticvoid Main(string[] args)
- {
- int num=ClassA.getNum();
- Console.WriteLine(num);
- Console.ReadLine();
- }
原因分析:
雖然有例項建構函式,但對classA類沒有進行例項化,所以該例項建構函式沒有被呼叫;
主函式程式碼修改如下:
-
static
- {
- ClassA a = new ClassA();
- int num=ClassA.getNum();
- Console.WriteLine(num);
- Console.ReadLine();
- }
如果類不宣告為靜態類(static class),很容易出現類似於上面的錯誤。修改為靜態類,程式碼如下:
- publicstaticclass ClassA
- {
- publicstaticstring AppName = "hello, this is a static class test";
- publicstaticint num = 5;
- static ClassA()
- {
- num = 15;
- }
- publicstaticint getNum()
- {
- return num;
- }
- }
主函式程式碼如下:
- staticvoid Main(string[] args)
- {
- int num=ClassA.getNum();
- Console.WriteLine(num);
- Console.ReadLine();
- }