46. C# -- 部分方法和部分類(partial)

來源:互聯網
上載者:User

標籤:c#

C# 2.0 可以將類、結構或介面的定義拆分到兩個或多個源檔案中,在類聲明前添加partial關鍵字即可。


代碼:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Test{    class Program{        static void Main(string[] args){            A a = new A();}}    partial class  A{        public A(){PrintHello();            Console.Read();}        partial void PrintHello(){            Console.WriteLine("Hello");}}    partial class A{        partial void PrintHello();        }}

結果:
Hello


什麼情況下使用部分類別?

–       處理大型項目時,使一個類分佈於多個獨立檔案中可以讓多位程式員同時對該類進行處理(相當於支援平行處理,很實用);

–       使用自動產生的源時,無需重新建立源檔案便可將代碼添加到類中。Visual Studio 在建立Windows 表單、Web Form時都使用此方法。你不用編輯Visual Studio 所建立的檔案,便可建立使用這些類的代碼。換句話說:系統會自動建立一個檔案(一般記錄的是表單及表單中的控制項的屬性),另一個或幾個檔案記錄的是使用者自己編寫的代碼。這兩部分分開可以使結構顯得非常清晰,使用者只需關注自己負責的那部分就行了(需要的話,這兩部分可以互相調用)。等到了編輯啟動並執行時候,系統會自動將這兩部分合成一個檔案。

 

使用Partial需要注意以下一些情況:

1.     使用partial 關鍵字表明可在命名空間內定義該類、結構或介面的其他部分

2.     所有部分都必須使用partial 關鍵字

3.     各個部分必須具有相同的可訪問性,如public、private 等

4.     如果將任意部分聲明為抽象的,則整個類型都被視為抽象的

5.     如果將任意部分聲明為密封的,則整個類型都被視為密封的

6.     如果任意部分聲明繼承基類時,則整個類型都將繼承該類

7.     各個部分可以指定不同的基底介面,最終類型將實現所有分部聲明所列出的全部介面

8.     在某一分部定義中聲明的任何類、結構或介面成員可供所有其他部分使用

9.巢狀型別可以是分部的,即使它們所嵌套於的類型本身並不是分部的也如此。如下所示:

class Container

{

partial class Nested

{

void Test1();

}

partial class Nested

{

void Test2();

}

}

 

使用分布類的一些限制:

 

1.   要作為同一類型的各個部分的所有部份型別定義都必須使用partial 進行修飾。如下所示:

public partial class A { }

public class A { } // Error, must also be marked partial

2. partial 修飾符只能出現在緊靠關鍵字class、struct 或interface前面的位置(枚舉或其它類型都不能使用partial);

3. 要成為同一類型的各個部分的所有部份型別定義都必須在同一程式集和同一模組(.exe 或.DLL 檔案)中進行定義。分部定義不能跨越多個模組;

4. 類名和泛型型別參數在所有的部份型別定義中都必須匹配。泛型型別可以是分部的。每個分部聲明都必須以相同的順序使用相同的參數名。


參考:
http://blog.sina.com.cn/s/blog_4aa25f130100esoe.html 
http://www.jb51.net/article/63131.htm

 

本文出自 “Ricky's Blog” 部落格,請務必保留此出處http://57388.blog.51cto.com/47388/1656053

46. C# -- 部分方法和部分類(partial)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.