1、靜態類
靜態類有幾個重要的特點:
1)無法實例化:由于靜態類不能被實例化,因此它不會占用對象內存。
2)靜態成員:靜態類只能包含靜態成員(靜態方法、靜態屬性、靜態事件等)。
3)全局訪問點:靜態類可以作為全局訪問點,提供對一組靜態方法的訪問。
4)無法繼承:靜態類不能被繼承。由于它們不能被實例化,所以繼承它們沒有意義。
靜態類使用關鍵字static 修飾,它的成員也要使用static 修飾,如下代碼:
//自定義一個靜態類
static class StaticClass
{public static string Name { get; set; } = "小王";public static int Add(int a, int b){return a + b;}public static int Multiply(int a, int b){return a * b;}
}
調用:
int a = StaticClass.Add(10, 20);int b = StaticClass.Multiply(2, 4);Console.WriteLine(a);Console.WriteLine(b);Console.WriteLine(StaticClass.Name );
輸出:
30
8
小王
上面的代碼中Add方法是一個靜態方法,使用類名.方法名 這樣的方式去調用,Name 是一個靜態屬性,使用類名.屬性名這樣的方式去調用。
2、非靜態類(使用的比較多)
1)可以實例化:你可以使用 new 關鍵字來創建非靜態類的對象。
2)實例成員:非靜態類可以包含實例成員(實例方法、實例屬性、實例事件等),這些成員屬于類的每個實例。
3)繼承:非靜態類可以被其他類繼承,實現代碼的重用和擴展。
這個非靜態類也是一個引用類型,參考代碼如下:
class NotStaticClass{public string Name { get; set; } = "小李";public int Add(int a, int b){return a + b;}public int Multiply(int a, int b){return a * b;}}
調用:
NotStaticClass notStaticClass = new NotStaticClass();notStaticClass.Add(10, 20);notStaticClass.Multiply(2, 4);Console.WriteLine(a);Console.WriteLine(b);Console.WriteLine(notStaticClass.Name );
輸出:
30
8
小李
我們可以看到對于非靜態類的調用都是使用new關鍵字,new這個類的對象出來,然后使用這個對象名.方法名 去調用方法,對象名.屬性去獲取屬性。
總結
在C#編程中一般沒有特別要求必須使用靜態或者非靜態類,一般使用非常頻繁的類可以寫成靜態類。