16-分部类
9.5 分部类
**本节视频教学录像:2分钟**
一般来说,一个类、结构或接口位于一个源文件中,但某些情况,比如大型项目、特殊部署时,可能需要把一个类、结构或接口放在几个文件中来处理。等到编译时,自动地把它们组合起来,成为一个完整的类,这就得应用 C# 分部类了。
分部类适用于以下几种情况。
- 类型特别大,不宜放在一个文件中实现。
- 一个类型中的一部分代码为自动化工具生成的代码,不宜与自己编写的代码混合在一起。
- 需要多人合作编写一个类。
分部类是一个纯语言层的编译处理,不影响任何执行机制,事实上C#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类。
C# 分部类是在class前面添加关键字partial来定义。
例如,在一个文件中声明分部类Person的代码如下。
01 public partial class Person //定义分部类Person的部分代码
02 {
03 public void DoWork() //定义方法DoWork
04 {
05 //定义方法,表示Person类有工作的功能
06 }
07 }
在另一个文件中声明分部类Person。
01 public partial class Person //定义分部类Person的部分代码
02 {
03 public void GoToLunch() //定义方法GoToLunch
04 {
05 //定义方法,表示Person类有去吃午饭的功能
06 }
07 }
Person类编译后拥有DoWork() 和 GoToLunch()两个方法。
分部类中还可以声明分部方法,分部方法是将方法的定义和实现分隔开。在方法前面用partial关键字修饰的方法就是分部方法。如在一个文件中定义分部方法DoWork方法。
01 public partial class Person //定义分部类Person
02 {
03 partial void DoWork(); //定义分部方法
04 }
在另一个文件中实现分部方法DoWork。
01 public partial class Person //定义分部类Person
02 {
03 partial void DoWork() //实现分部方法
04 {
05 //实现分部方法代码
06 }
07 }
分部方法隐式为 private 类型,不可使用 public 访问修饰符。分部方法不可有返回值。因此一般分部方法用处不大,特别是分部方法只能是 private 类型。