1、分部类和分部类型
类的声明可以分割成几个分部类的声明
-
每个分部类的声明都有一些成员的声明
-
类的分部类声明可以在同一文件中也可以在不同文件中
-
每个分部类声明必须被标注为
patial class
partial class MyPartClass //类名称与下部分相同
{
member1 delaration
member2 delaration
}
partial class MyPartClass //类名称与上部分相同
{
member3 delaration
member4 delaration
}
如下代码块文件, 可以被分割成两个文件
class MyPartClass
{
public void OutPut1(int inVal) {...}
public void OutPut2(int inVal) {...}
}
partial class MyPartClass
{
public void OutPut1(int inVal) {...}
}
partial class MyPartClass
{
public void OutPut2(int inVal) {...}
}
注意
-
类型修饰符partial不是关键字, 所以在其他上下文中, 可以在程序中把它用作标识符
-
但是直接用在关键字class、struct或interface之前, 它表示分部类型
VS为标准Windows程序模板使用了这个特性, 如果从标准模板创建ASP.NET项目 WPF项目, 模板会为每一个Web页面、表单或窗体创建两个类文件.对于ASP.NET后WindowsForms
-
一个文件中的分部类包括由VS生成的代码, 声明类页面上的组件, 你不应该修改这个文件中的部分类, 因为在修改页面组件时, VisualStudio会重新生成他
-
另一个文件包含的分部类可用于实现页面或表单组件的外观和行为
除了分部类, 还可以创建
-
局部结构
-
局部接口
2、分部方法
分部方法是声明在分部类中不同部分的方法, 分部方法不同部分在分部类的不同部分中, 也可以声明在同一个部分中, 分部方法的两个部分都如下
-
定义分部方法声明
-
给出签名和返回类型
-
声明的实现部分只是一个分号
-
-
实现分部方法声明
-
给出签名和返回类型
-
以普通的语句块形式实现
-
注意
-
定义声明和实现声明的签名和返回类型必须匹配, 签名和返回类型都有如下特征
-
返回类型必须是void
-
签名不能包括访问修饰符, 这使得分部方法是隐式私有的
-
参数列表不能包含out参数
-
在定义声明和实现声明中都必须包含上下文关键字partial, 并且直接放在关键字void之前
-
-
可以有定义部分而没有实现部分, 在这种情况下, 编译器把方法的声明以及方法内部任何对方法的调用都移除, 不能只有分部方法的实现部分而没有定义部分
例子
-
PrintSum声明在分部类不同部分, 定义声明在第一个部分中, 实现声明在第二个部分, 实现部分打印出两个整型参数的和
-
因为分部方法是隐式私有的, 所以PrintSum不能从类的外部调用, 方法Add是调用PrintSum的公有方法
-
Main创建类的一个对象, 并调用它的公有方法, 公有方法调用PrintSum, 打印出输入参数的和
//分部类, 定义分部方法
partial class Program720
{
//定义分部方法, 分部方法返回值必须为空
partial void PrintSum(int x, int y);
//使用分部方法
public void Add(int x, int y)
{
PrintSum(x, y);
}
}
//分部类, 实现分部方法
partial class Program720
{
//实现分部方法, 分部方法返回值必须为空
partial void PrintSum(int x, int y)
{
Console.WriteLine($"分部方法PrintSum实现部分, 结果为:{x + y}");
}
}
static void Main(string[] args)
{
Program720 program720 = new Program720();
program720.Add(1, 2);
}
标签:部类,partial,C#,方法,void,--,分部,声明
From: https://www.cnblogs.com/phonk/p/17418962.html