partial是为了简化项目结构而诞生的关键字。它可以拆分一个类,一个结构,一个接口或一个方法到俩个或者更多得文件中,使得代码得结构更加清晰。这样,每个源文件包含类或者方法定义得一部分,在编译时期再组合起来。
分部类 (partial class)
使用场景
- 处理大型项目时,一个类分布到多个文件中方便多人协作
- 对于一个大型得程序集,需要很多不同功能得子模块,这个时候使用partial会让结构更加清晰
- 当使用自动生成的源文件,你可以添加代码而不需要重新创建源文件
功能
在编译期,将以下内容进行合并
- xml注释
- 接口
- 泛型类型参数
- class特性
- 成员
使用规则
- 作为同一个类得分部类定义都必须使用partial进行修饰
public partial class Network{
int a;
}
//error code
/*
public class Network{
int b;
}
*/
- partial修饰符只能出现在关键字class,struct,interface前面得位置
- 分部类中允许使用嵌套分部类
- 一个类的所有分部类必须在同一程序集和同一模块中
- 分部类的类名和泛型类型参数必须匹配
- 以下关键字可以出现在partial类的定义中,但是注意不可以有冲突
/*
public
private
protect
internal
abstract
sealed
基类
new修饰符
泛型约束
*/
使用样例
public class Network{
public void Send(){}
}
public class Network{
public void Receive{}
}
// 等效于
public class Network{
public void Send(){}
public void Receive{}
}
分部方法
分部的方法的核心就是在一个地方定义,在另外一个地方声明,只要定义了就可以在代码里使用,如果没有声明,在编译器会自动删除调用的代码。
使用规则
- 方法必须用partial修饰,返回值必须为void
- 可以有in或者ref参数,但不能有out参数
- 分部方法为隐式private,因此不能用virtual方法
- 不能为extern方法
- 可以有static,unsafe
- 可以是泛型
- 可以为分部方法生成委托