分部类
类的声明可以分割成几个分部类的声明
类型修饰符:partial
- 每个分部类的声明都含有一些类成员的声明。
- 类的分部类声明可以在同一文件中也可以在不同文件中
每个局部声明必须被标为partial class,而不是单独的关键字class。
例1
partial class MyPartClass
{
member1 declaration;
member2 declaration;
....
}
partial class MyPartClass
{
member1 declaration;
member2 declaration;
}
注意
- 类型修饰符partial不是关键字
- 组成类的所有分部类声明必须在一起编译
- 使用分部类声明的类必须有相同的含义,就好像所有类成员声明在一个单独的类声明体内
例2
//file1.cs原本写的
class MyPartClass
{
public void Output1(int inva1)
{
Console.writeLine("{0}".inVa1)
}
public void Output2(int inva1) {
Console.MriteLine("{0)",inva1);
}
}
//采用分部类后------------
//file2.cs文件里
partial class MyPartClass
{
public void Output1(int inva1)
{
Console.writeLine("{0}".inVa1)
}
}
//file3.cs文件里
partial class MyPartClass
{
public void Output2(int inva1) {
Console.MriteLine("{0)",inva1);
}
}
分部方法
声明在分部类中不同部分的方法
分部方法的不同部分可以声明在不同的分部类中,也可以声明在同一个类中
组成
- 定义分部方法声明。
- 给出签名和返回类型。
- 声明的实现部分只是一个分号。
- 实现分部方法声明。
- 给出签名和返回类型。
- 是以正常形式的语句块实现。
注意
-
定义声明和实现声明的签名和返回类型必须匹配。签名和返回类型有如下特征。
- 返回类型必须是void。
- 签名不能包括访问修饰符,这使分部方法是隐式私有的。
- 参数列表不能包含out参数。
- 在定义声明和实现声明中都必须包含上下文关键字partial,直接放在关键字void之前。
-
可以有定义部分而没有实现部分。
例
partial class MyClass
{
partial void PrintSum(int x, int y); //返回值必须是void 未实现部分
public void Add(int x, int y) {
PrintSum(x, y);
}
}
partial class MyClass
{
partial void PrintSum(int x, int y) //返回值必须是void
{
Console.WriteLine($"{x + y}"); //实现部分
}
}
class Program
{
static void Main() {
MyClass mc = new MyClass();
mc.Add(5, 6);
}
}
结果
11