C# partial症結字解釋。本站提示廣大學習愛好者:(C# partial症結字解釋)文章只能為提供參考,不一定能成為您想要的結果。以下是C# partial症結字解釋正文
C# 中可以將類、構造或接口的界說拆分到兩個或多個源文件中,在類聲明前添加partial症結字便可。
1. 甚麼是部分類型?
C# 2.0 引入下場部類型的概念。部分類型許可我們將一個類、構造或接口分紅幾個部門,分離完成在幾個分歧的.cs文件中。
部分類型實用於以下情形:
(1) 類型特殊年夜,不宜放在一個文件中完成。
(2) 一個類型中的一部門代碼為主動化對象生成的代碼,不宜與我們本身編寫的代碼混雜在一路。
(3) 須要多人協作編寫一個類。
部分類型是一個純說話層的編譯處置,不影響任何履行機制——現實上C#編譯器在編譯的時刻仍會將各個部門的部分類型歸並成一個完全的類。
public partial class Program { static void Main(string[] args) { } } partial class Program { public void Test() { } }
2. 部分類型的限制
(1) 部分類型只實用於類、接口、構造,不支撐拜托和列舉。
(2) 統一個類型的各個部門必需都有潤飾符 partial。
(3) 應用部分類型時,一個類型的各個部門必需位於雷同的定名空間中。
(4) 一個類型的各個部門必需被同時編譯。
3. 部分類型的留意點
(1) 症結字partial是一個高低文症結字,只要和 class、struct、interface 放在一路時才有症結字的寄義。是以partial的引入不會影響現有代碼中稱號為partial的變量。
(2) 部分類型的各個部門普通是離開放在幾個分歧的.cs文件中,但C#編譯器許可我們將他們放在統一文件中。
4. 部分類型的運用特征
在部分類型上的特征具有“累加”效應。
[Attribute1, Attribute2("Hello")] partial class Class1{} [Attribute3, Attribute2("Exit")] partial class Class1{}
相當於
[Attribute1, Attribute2("Hello"), Attribute3, Attribute2("Exit")] class Class1 {}
注:Attribute2屬性許可在類上屢次應用。
5. 部分類型上的潤飾符
(1) 一個類型的各個部門上的拜訪潤飾符必需保持分歧性。
(2) 假如一個類型有一個部門應用了abstract潤飾符,那末全部類都將被視為籠統類。
(3) 假如一個類型有一個部門應用了 sealed 潤飾符,那末全部類都將被視為密封類。
(4) 一個類的各個部門不克不及應用互相抵觸的潤飾符,好比不克不及在一個部門上應用abstract,又在另外一個部門上應用sealed。
6. 部分類型的基類和接口
(1) 一個類型的各個部門上指定的基類必需分歧。某個部門可以不指定基類,但假如指定,則必需雷同。
(2) 部分類型上的接口具有“累加”效應。
partial class Class2: Iinterface1, Iinterface2 {} partial class Class2: Iinterface3 {} partial class Class2: Iinterface2 {}
相當於
class Class2: Iinterface1, Iinterface2, Iinterface3 {}
把一切的源代碼作為一個類型保留在一個零丁的文件裡是一個好的編程習氣,但有時刻一個類型變得過於宏大以致於如許做成為一個不實在際的束縛。另外,編程人員常常應用源代碼生成器來發生一個運用法式的初始構造,然後再修正發生的代碼。不幸的是,當源代碼在未來某個時刻再次宣布時,已存在的修正就要被籠罩了。
Partial types許可把類,構造和接口打破為多個代碼碎片存在分歧的源代碼文件,以便於簡化開辟和保護。加上partial types許可機械發生的和用戶編寫的類型部門分別,如許便可以便利增長對象發生的代碼。
Partial,是一個新的類型潤飾符,在把一個類型界說在多個部門的時刻應用。上面是一個partial class的示例,以兩個部門完成。這兩個部門能夠在兩個分歧的源代碼文件,好比說第一個部門是由一個數據庫映照對象發生的,而第二個部門是手工編寫的。
public partial class Customer { private int id; private string name; private string address; private List<Order> orders; public Customer() { } } public partial class Customer { public void SubmitOrder(Order order) { orders.Add(order); } public bool HasOutstandingOrders() { return orders.Count > 0; } }
當下面的兩個部門在一路編譯,成果發生的代碼就似乎這個類是寫在一個單位裡一樣。
public class Customer { private int id; private string name; private string address; private List<Order> orders; public Customer() { } public void SubmitOrder(Order order) { orders.Add(order); } public bool HasOutstandingOrders() { return orders.Count > 0; } }
一個partial type的一切部門必需在一路編譯,如許一切的部門能力在編譯的時刻整合在一路。特殊的是partial types不許可參加曾經編譯好的類型。
以上所述是小逼給年夜家引見的C# partial症結字解釋,願望對年夜家有所贊助!