天天看點

跟小靜讀CLR via C#(07)-靜态類,分部類

靜态類是一些不能執行個體化的類,它的作用是将一些相關的成員組合到一起,像我們常見的Math, Console等。靜态類由static關鍵字辨別,靜态類成員也隻能是static類型。Static關鍵字隻能用于修飾類,不能修飾值類型。

C#編譯器對靜态類的限制:

1.         基類隻能為System.Object。

因為繼承是針對對象而言的,靜态類不能建立執行個體,是以從其他類派生沒有實際意義。

2.         靜态類不能實作接口。

3.         靜态類的成員隻能為static類型,可以定義靜态的方法,屬性,事件等。

<a></a>

    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關鍵字我們并不陌生,比如在web form的code-behind模式就經常看到這個關鍵字。它可以應用于類、結構或者接口,告訴編譯器分散到多個中的源代碼其實是同一個類、結構或接口。

分部類型Partial其實是由編譯器提供的,CLR對此并不知情。是以編譯器編譯後要将相應代碼合并後生成一個類型。是以,幾個分部類的源代碼檔案都要使用同一種程式設計語言。

分部方式的用處?

1.         源代碼管理

在使用TFS等進行源代碼控制時,如果幾個程式員同時修改一個檔案,還要進行merge操作。如果使用Partial關鍵字,可以将類的代碼分散到多個檔案中去,使多人友善的同時編輯。

2.         代碼拆分

在使用vs設計窗體時,設計器生成的檔案和具體的功能代碼是分離的,提高了開發效率,防止誤操作。

3.         将類或結構分解成獨立的邏輯單元

如果一個類提供許多複雜的功能,我們可以在源代碼中使用分部類,将不同邏輯單元使用分部類拆分開來。這樣當我們想從類中去除一個功能子產品時也會變得比較容易操作。

對于分部類,其實實際開發中還沒有特意用過,以後遇到上面說的這種情況的時候,可以考慮一下。

    本文轉自 陳敬(Cathy) 部落格園部落格,原文連結:http://www.cnblogs.com/janes/archive/2011/08/01/2124372.html,如需轉載請自行聯系原作者

繼續閱讀