一.先看代码来理解
代码一
1 class ClassA 2 { 3 void A(){;} 4 void B(){;} 5 }
代码二
1 partial class ClassA 2 { 3 void A(){;} 4 } 5 partial class ClassA 6 { 7 void B(){;} 8 }
代码一和代码二效果是一样的,引用类的成员完全一样,只是声明不不同而已。主要partial在这里是分部类型的关键词
编译过程图解
二.应用场景
1.嵌套在一个类里面
1 class Container 2 { 3 partial class Nested 4 { 5 void Test() { } 6 } 7 partial class Nested 8 { 9 void Test2() { } 10 } 11 }
2.分部类型给予不同的特性
1 [System.SerializableAttribute] 2 partial class Moon { } 3 4 [System.ObsoleteAttribute] 5 partial class Moon { } 6 7 8 //等效于下面 9 10 [System.SerializableAttribute] 11 [System.ObsoleteAttribute] 12 class Moon { }
3.继承不同的基类
1 partial class Earth : Planet, IRotate { } 2 partial class Earth : IRevolve { } 3 4 //等效于 5 class Earth : Planet, IRotate, IRevolve { }
4.一个类在不同的文件下面定义
1 //文件一下 2 namespace PC 3 { 4 partial class A 5 { 6 int num = 0; 7 void MethodA() { } 8 partial void MethodC(); 9 } 10 }
1 //文件二下 2 namespace PC 3 { 4 partial class A 5 { 6 void MethodB() { } 7 partial void MethodC() { } 8 } 9 }
欢迎继续补充
三.总结
分部类型只是在定义时候,注意用partial关键词,调用时候不影响
它不只可以用在类,还可以用在接口,结构定义