C# partial
?把所有的源代碼作為一個(gè)類型保存在一個(gè)單獨(dú)的文件里是一個(gè)好的編程習(xí)慣,但有時(shí)候一個(gè)類型變得過于龐大以至于這樣做成為一個(gè)不切實(shí)際的約束。此外,編程人員經(jīng)常使用源代碼生成器來產(chǎn)生一個(gè)應(yīng)用程序的初始結(jié)構(gòu),然后再修改產(chǎn)生的代碼。不幸的是,當(dāng)源代碼在將來某個(gè)時(shí)候再次發(fā)布時(shí),已存在的修改就要被覆蓋了。
?
Partial types允許把類,結(jié)構(gòu)和接口打破為多個(gè)代碼碎片存在不同的源代碼文件,以便于簡化開發(fā)和維護(hù)。加之partial types允許機(jī)器產(chǎn)生的和用戶編寫的類型部分分離,這樣就可以方便增加工具產(chǎn)生的代碼。
?
Partial,是一個(gè)新的類型修飾符,在把一個(gè)類型定義在多個(gè)部分的時(shí)候使用。下面是一個(gè)partial class的示例,以兩個(gè)部分實(shí)現(xiàn)。這兩個(gè)部分可能在兩個(gè)不同的源代碼文件,比如說第一個(gè)部分是由一個(gè)數(shù)據(jù)庫映射工具產(chǎn)生的,而第二個(gè)部分是手工編寫的。
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;
??? }
}
當(dāng)上面的兩個(gè)部分在一起編譯,結(jié)果產(chǎn)生的代碼就好像這個(gè)類是寫在一個(gè)單元里一樣。
?
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;
??? }
}
一個(gè)partial type的所有部分必須在一起編譯,這樣所有的部分才能在編譯的時(shí)候整合在一起。特別的是partial types不允許加入已經(jīng)編譯好的類型。
總結(jié)
以上是生活随笔為你收集整理的C# partial的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos8上安装mysql8遇到SE
- 下一篇: 微信小程序:使swiper的高度沾满整个