一、 靜態類-Static
靜態類是一些不能執行個體化的類,它的作用是將一些相關的成員組合到一起,像我們常見的Math, Console等。靜態類由static關鍵字標識,靜態類成員也只能是static類型。Static關鍵字只能用於修飾類,不能修飾實值型別。
C#編譯器對靜態類的限制:
1. 基類只能為System.Object。
因為繼承是針對對象而言的,靜態類不能建立執行個體,所以從其他類派生沒有實際意義。
2. 靜態類不能實現介面。
3. 靜態類的成員只能為static類型,可以定義靜態方法,屬性,事件等。
public static class StaticClass
{
private static string _name;
public static string Name
{
get { return _name; }
set { _name = value; }
}
}
在ILDASM.exe中查看,我們會看到該靜態類被編譯器同時標記為abstract和sealed。而且,可以看到靜態類不會產生預設的.ctor執行個體構造器。
4. 靜態類不能用作局部變數、欄位、方法的參數等。因為它們都需要引用一個執行個體。
二、 部分類別、結構、介面-Partial
對於partial關鍵字我們並不陌生,比如在web form的code-behind模式就經常看到這個關鍵字。它可以應用於類、結構或者介面,告訴編譯器分散到多個中的原始碼其實是同一個類、結構或介面。
部分型別Partial其實是由編譯器提供的,CLR對此並不知情。所以編譯器編譯後要將相應代碼合并後產生一個類型。因此,幾個部分類別的原始碼檔案都要使用同一種程式設計語言。
分部方式的用處?
1. 原始程式碼控制
在使用TFS等進行原始碼控制時,如果幾個程式員同時修改一個檔案,還要進行merge操作。如果使用Partial關鍵字,可以將類的代碼分散到多個檔案中去,使多人方便的同時編輯。
2. 代碼拆分
在使用vs設計表單時,設計器產生的檔案和具體的功能代碼是分離的,提高了開發效率,防止誤操作。
3. 將類或結構分解成獨立的邏輯單元
如果一個類提供許多複雜的功能,我們可以在原始碼中使用部分類別,將不同邏輯單元使用部分類別拆分開來。這樣當我們想從類中去除一個功能模組時也會變得比較容易操作。
對於部分類別,其實實際開發中還沒有特意用過,以後遇到上面說的這種情況的時候,可以考慮一下。