標籤:c# 靜態類
靜態建構函式:
C#的一個新特徵是也可以給類編寫無參數的靜態建構函式。編寫靜態建構函式的一個原因是,類有一些靜態欄位或屬性,需要在第一次使用類之前,從外部源中初始化這些靜態欄位和屬性。
.NET運行庫沒有確保什麼時候執行靜態建構函式,所以不能把要求在某個特定時刻執行的代碼放在靜態建構函式中。也不能預計不同類的靜態建構函式按照什麼順序執行。但是可以確保靜態建構函式至多運行一次,即在代碼引用類之前調用它。
靜態建構函式沒有存取修飾詞,其他C#代碼從來不調用它,但在載入類時,總是由.NET運行庫調用它,所以像public或private這樣的存取修飾詞就沒有任何意義。
出於同樣的原因,靜態建構函式不能帶任何參數,一個類只能有一個靜態建構函式。很顯然,靜態建構函式只能訪問類的靜態成員,不能訪問類的執行個體成員。
注意,無參數的執行個體建構函式與靜態建構函式可以在一個類中同時定義。儘管參數列表相同,但這並不矛盾,因為在載入類時執行靜態建構函式,而在建立執行個體使執行執行個體建構函式,所以何時執行哪個建構函式並不衝突。
class BaseClass{ private static int count; static BaseClass() { count = 0; console.writeline("aaa"); }}
靜態欄位:
使用static修飾 屬於類,不屬於某個執行個體。
與執行個體欄位一樣,可以在聲明的同時進行初始化。
與執行個體欄位不同,如果沒有對靜態欄位進行初始化,靜態欄位將自動擷取預設值(0,null,false等)。所以,一個靜態欄位即使沒有被顯示地賦值,也可以被訪問。
訪問需要使用 類名.靜態欄位名,不能使用 對象名.靜態欄位名
靜態方法:
使用static修飾,直接使用 類名.方法名
靜態方法的函數體內不能直接使用非靜態成員,也沒有this.
靜態類:
如果類只包含靜態方法和屬性,該類就是靜態類。靜態類在功能上與使用私人靜態建構函式建立的類相同,不能建立靜態類的執行個體。
靜態類是不能執行個體化的,我們直接使用它的屬性與方法,靜態類最大的特點就是共用。
public static class StaticTestClass{ public static int n = 0; public static void Add() { n++; }}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
C#中的“靜態”