C#關鍵字之Partial詳解


Partial是局部類型的標志。局部類型可以實現將一個類、結構或接口分成幾個部分,分別放在在幾個不同的.cs文件中(當然也可以放在同一個.cs文件中)。在程序進行編譯之后,將會合並成一個完整的類。因此局部類型並沒有看起來那么難以理解,使用partial只是讓類變得更容易管理,實際使用時和普通的類一樣。

  1. 適用范圍: (1)類型特別大,不適合放在一個文件中實現。 (2) 一個類型中的一部分代碼為自動化工具生成的代碼,不宜與我們自己編寫的代碼混合在一起。(如設計模式中的“模板方法”。模板方法就是把所有相同功能都寫在父類中,需要有變化的方法在父類中寫成虛方法,然后在子類中重寫虛方法,因此模板方法利用partial實現了代碼的利用。) (3)一個類同時需要多個人編寫。

  2. 注意事項: (1)只適用於類、接口、結構,不支持委托和枚舉。 (2)同一個類型的各個部分必須有修飾符partial。 (3)使用局部類型時,一個類型的各個部分必須位於相同的命名空間中。 (4)一個類型的各個部分必須同時被編譯。 (5)partial只有和class、struct、interface放在一起時才表示局部類型。 (6)一個類型的各部分子類的訪問修飾符必須保證一致性。 (7)若其中一個部分類使用了static/abstract/sealed修飾符,則整個類都是靜態類/抽象類/密封類。(后面會有static/abstract/sealed的詳解)。另外注意不能在一個部分類上使用static,在另一個部分類上使用abstract。 (8)局部類型的累加效應。 a. 特性的累加效應。

[Attribute1, Attribute2("Hello")] partial class Class1{} [Attribute3, Attribute2("Exit")] partial class Class1{} 相當於 [Attribute1, Attribute2("Hello"), Attribute3, Attribute2("Exit")] class Class1 {} 注:Attribute2屬性允許在類上多次使用。
b. 接口的累加效應。
partial class Class2: Iinterface1, Iinterface2 {} partial class Class2: Iinterface3 {} partial class Class2: Iinterface2 {} 相當於 class Class2: Iinterface1, Iinterface2, Iinterface3 {}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM