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, string Password) { 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的優缺點其實都挺明顯:
優點:
提高了程序員開發時對程序編輯的靈活性,只需要維護自己的項目模塊就好
缺點:
降低了程序邏輯的可讀性,增加了維護的難度