C# partial 部分类使用简单举例说明
partial 關(guān)鍵字允許把類、結(jié)構(gòu)、方法或者接口放在多個(gè)文件中。一般情況下,某種類型的代碼生成器生成了一個(gè)類的某部分,所以把這類放在多個(gè)文件中是有益的。假定要給類添加一些從工具中自動(dòng)生成的內(nèi)容。如果重新運(yùn)行該工具,前面所做的修改就會(huì)丟失。partial 關(guān)鍵字有助于把類分開放在兩個(gè)文件中,而對(duì)不由代碼生成器定義的文件進(jìn)行修改。
partial 關(guān)鍵字的用法是:把Partial放在class、struct、或者inteface關(guān)鍵字前面。在下面的舉例中 SampleClass類駐留在兩個(gè)不同的源文件 SampleClassAutogenerated.cs 和 SampleClass.cs中。
//SampleClassAtuogenerated.cs partial class SampleClass {public void MethodOne(){} }//SampleClass.cs partial class SampleClass {public void MethodTwo(){} }編譯包含這兩個(gè)源文件項(xiàng)目時(shí),會(huì)創(chuàng)建一個(gè)SampleClass類,它有兩個(gè)方法MethodOne() 和 MethodTwo()。
如果聲明類時(shí) 使用了下面的關(guān)鍵字,則這些關(guān)鍵字就必須應(yīng)用于同一個(gè)類型的的所有部分。
1、public
2、private
3、protected
4、internal
5、abstract
6、sealed
7、new
8、一般約束
在嵌套的類型中,只要partial關(guān)鍵字位于class關(guān)鍵字的前面,就可以嵌套部分類。在把部分類編譯到類型中時(shí),屬性,XML注釋,接口,泛型類型的參數(shù)屬性和成員會(huì)合并。有如下兩個(gè)源文件:
//SampleClassAutogenerated.cs [CustomAttribute] partial class SampleClass:SampleBaseClass,IsampleClass {public void MethodOne(){} }//SampleClass.cs [AnotherAttribute] partial class SampleClass:IOtherSampleClass {public void MethodTwo(){} }編譯后,等價(jià)的源文件變成:
[CustomAttribute] [AnotherAttribute] partial class SampleClass:SampleBaseClass,ISampleClass,IOtherSampleClass {public void MethodOne(){}public void MethodTwo(){} }?注意:盡管partial 關(guān)鍵字很容易創(chuàng)建跨多個(gè)文件的巨大的類,且不同的開發(fā)人員處理同一個(gè)類的不同文件,但是關(guān)鍵字并不用于這個(gè)目的。在這種情況下,最好把大類拆分成幾個(gè)小類,一個(gè)類只用于一個(gè)目的。
部分類可以包含部分方法。如果生成的代碼應(yīng)該調(diào)用可能不存在的方法,這就是非常有用的。擴(kuò)展部分類的程序員可以決定創(chuàng)建部分方法的自定義實(shí)現(xiàn)代碼,或者什么也不做。下面的代碼片段包含一個(gè)部分類,其方法MethodOne調(diào)用APartialMethod方法。APartialMethod方法用partial關(guān)鍵字聲明:因此不需要任何實(shí)現(xiàn)代碼。如果沒有實(shí)現(xiàn)代碼,編譯器將刪除這個(gè)方法調(diào)用:
//SampleClassAtuogenerated.cs partial class SampleClass {public void MethodOne(){APartiaMethod();}public partial void APartialMethod(); }部分方法在實(shí)現(xiàn)可以放在部分類的任何其他地方,如下面的代碼片段所示。有了這個(gè)方法,編譯器就在MethodOne內(nèi)創(chuàng)建代碼,調(diào)用這里聲明的APartialMethod:
//SampleClass.cs partial class SampleClass : IOtherSampleClass {public void APartilMethod(){//implementation of APartialMethod} }部分方法必須是void類型,否則編譯器在沒有實(shí)現(xiàn)了代碼的情況下無法刪除調(diào)用。?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的C# partial 部分类使用简单举例说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos linux7 系统安装
- 下一篇: discuz的ajax,discuz分页