分部类
分部类型可以将:class/interface/struct
分成多个部分声明。
同一类型的各个分部类需使用partial
进行标记。
分部类一般分布在多个源文件中,但必须是在同一程序集或模块中。
通常用在代码生成器生成的代码和自定义的代码,如:winform中的窗体设计器生辰的代码与我们手动编写的代码就是拆分成了两个文件,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| partial class MainForm { private System.Windows.Forms.ListView listView;
private void InitializeComponent() { this.listView = new System.Windows.Forms.ListView(); } }
partial class MainForm : Form { public MainForm() { InitializeComponent(); }
public void RefreshListView() { listView.Items.Clear(); for(int i = 0; i < 10; i++) { listView.Items.Add(new ListViewItem(i)); } } }
|
分部方法
C#3之后,允许在分部类中包含分部成员。类的一个部分包含成员的签名。 可以在同一部分或另一部分中定义实现。
当签名遵循以下规则时,分部方法不需要实现。当在分部类没有对其进行实现时,在编译时会移除对该方法及该方法的所有调用。
- 声明未包含任何访问修饰符。(即默认private)
- 返回类型必须是 void
- 允许有
in / ref
修饰的参数,但不允许有out
修饰的参数
- 不包含
virtual/override/sealed/new/extern
修饰符
写个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| partial class ClassA { partial void PartialMethod();
public void CallPartialMethod() { PartialMethod(); } }
partial class ClassA { partial void PartialMethod() { Console.WriteLine("Partial Method Implemented"); } }
|