C# 中Partial的用法
阿新 • • 發佈:2020-09-01
C# 中Partial的用法
在學習中又開始接觸新的小知識了,記錄一下,方便以後複習。
Partial
C#2.0可以將類,結構或介面的定義拆分到兩個或多個原始檔中,在類宣告前新增Parrtial關鍵字即可
例:
//源class
public class ToDo { public string name { get; set; } public string password { get; set; } public bool judge(string Name, stringPassword) { if (Name == name && password == Password) { return true; } return false; } }
//用partial後拆分為一下 public partial class TODO { public string name { get; set; } public string password { get; set; } }
public partial class TODO { public bool judge(string Name, string Password) { if (Name == name && password == Password) { return true; } return false; } }
//由於擁有Parial指定後,不管分為幾個類,class指標始終指向TODO,所以可以呼叫其中的所有屬性,哈哈哈,挺好玩的
使用Partial需要注意以下一些情況
1、使用partial 關鍵字表明可在名稱空間內定義該類、結構或介面的其他部分
2、所有部分都必須使用partial 關鍵字
3、各個部分必須具有相同的可訪問性,如public、private 等
4、如果將任意部分宣告為抽象的,則整個型別都被視為抽象的
5、如果將任意部分宣告為密封的,則整個型別都被視為密封的
6、如果任意部分宣告繼承基類時,則整個型別都將繼承該類
7、各個部分可以指定不同的基介面,最終型別將實現所有分部宣告所列出的全部介面
8、在某一分部定義中宣告的任何類、結構或介面成員可供所有其他部分使用
應用場景
可以使用partial class的場景很多。這裡分析一個ORM的例子。系統中有一個Cat類,屬性ID、Age、Weight都需要儲存到資料庫中,一個資訊系統中常見的需求。通過讀取資料庫的結構,可以用工具生成Cat類的程式碼。並且ORM框架支援了從資料庫資訊生成Cat物件。
現在的Cat什麼動作都沒有,客戶說,我們需要一個Miaow()的函式。這時就需要對ORM生成的Cat類進行擴充套件了。可以肯定地一點是,我們不能修改自動生成的程式碼,因為這會牽涉到資料庫結構與程式碼同步的問題。解決這個需求有兩種方法:繼承方式擴充套件,partial class擴充套件。
優缺點
Partial的優缺點其實都挺明顯:
優點:
提高了程式設計師開發時對程式編輯的靈活性,只需要維護自己的專案模組就好
缺點:
降低了程式邏輯的可讀性,增加了維護的難度