almost 3 years ago

部份類別(Partial Class)

部分類別使用時機大都在處理大型專案時,將類別分散至個別檔案,可讓多位程式設計師進行運作。

程式碼說明建立部分類別的方法,就是加上關鍵子『partial』。

//部分類別(Employee其中一個組件)
public partial class Employee
{
    public string PracticeTime;

    public void DoWork()
    {
    }
}

//部分類別(Employee其中一個組件)
public partial class Employee
{
    public string   GoToDinner()
    {
        return "GoToDinner" ;
    }
}


protected void Page_Load(object sender, EventArgs e)
{
        Employee Employ = new Employee { PracticeTime = "100" 
        TextBox1.Text = Employ.GoToDinner();
        TextBox6.Text = Employ.PracticeTime;     
}

執行結果

GoToDinner
100

部分類別的特性

  • 所有組件都必需在相同命名空間(Namespace)
  • 如果有任何組件宣告為abstract則被視為抽象,如果宣告為Sealed則被視為密封,如果其中一繼承某基底類別,整個型別都會繼承
  • 任何組件都可以指定不同的基底介面,最後的型別會實作所有部份宣告的任何介面

部份方法的特性

  • 部分方法的簽章是在部分型別中的一部分定義,而其實作是在型別的另一部分中定義。

    //部份類別
     public partial class Employee
    {
    public string PracticeTime;
    
    //定義方法
    partial void DoWork();
    
    }
    
    //部份類別
    public   partial class Employee
    {
     //部分方法,實作。
        partial void DoWork()
        {
          Console .WriteLine("DoWork~~~" );
        }
    
        public   string   GoToDinner()
        {
          return "GoToDinner" ;
        }
    }
    

    如果其中一個部分型別改成

    partial void DoWork()
    {
    }
    

    編譯器會打斷他的腿。

  • 部分型別兩個部分中的簽章必須相符

  • 方法必預回傳void

  • 沒有存取修飾詞是被允許的

  • 如果沒有任何一個部分方法提供實作,則編譯器便會移除該方法和所有的呼叫。

  • 部份方法都是隱含private,因此不能virtual


參考資料

http://msdn.microsoft.com/zh-tw/library/wa80x488.aspx

← 物件導向系列菜單6-『Interface介面』 物件導向系列菜單8-『屬性(Properties)與欄位(Field)和存取子(accessor)』 →
 
comments powered by Disqus