C#分部类和分部方法的使用
作者:互联网
将同一个类编写在多个文件中,类的各个文件名不同,类名相同,类名前加partial关键字,这种类型叫分部类。
在分部类中可以建立分部方法,方法名前加关键字partial,分部方法只能将方法分成两部分,即声明部分和实现部分分别位于不同的分部类里。分部方法可以使静态方法,但必须是隐式的私有方法,并且无返回值的方法,因为分部方法时私有方法,所以无法使用virtual修饰符,即不能成为虚方法;分部方法可以有ref参数,但不能有out参数;不允许将委托转换为分部方法。
下例中首先建立项目PartialTypes,主类文件为Program.cs,在项目中添加一个类文件SingerDefine.cs,类名为Singer,再添加另一个类文件SingerImp.cs,类名为Singer。类名前都加partial修饰符
SingerDefine.cs文件里声明两个私有字段和两个分布方法,方法名前加关键字partial,代码如下:
[c-sharp] view plaincopy
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace PartialTypes
- {
- internal partial class Singer
- {
- //声明两个私有字段
- private string _cn;
- private string _am;
- //声明两个分布方法
- partial void getmsgA(string str);
- partial void getmsgB(int i);
- }
- }
SingerImp.cs文件里,包含分部方法的实现部分,分部方法组合成一个新方法,定义两个属性对私有字段进行读写,代码如下:
[c-sharp] view plaincopy
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace PartialTypes
- {
- internal partial class Singer
- {
- //两个分部方法的实现部分
- partial void getmsgA(string str)
- {
- Console.WriteLine("getmsgA方法所接收的参数是【{0}】,数据类型是【{1}】", str.ToString(), str.GetType());
- }
- partial void getmsgB(int i)
- {
- Console.WriteLine("getmsgB方法所接收的参数是【{0}】,数据类型是【{1}】", i.ToString(), i.GetType());
- }
- //声明getmsg方法,调用两个分部方法
- internal void getmsg(string str, int i)
- {
- getmsgA(str);
- getmsgB(i);
- }
- //声明两个属性,用于读取和写入两个私有字段
- internal string Cn
- {
- get
- {
- return _cn;
- }
- set
- {
- _cn = value;
- }
- }
- internal string Am
- {
- get
- {
- return _am;
- }
- set
- {
- _am = value;
- }
- }
- }
- }
主程序文件调用分部类,及分部方法,代码如下:
[c-sharp] view plaincopy
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace PartialTypes
- {
- class Program
- {
- static void Main(string[] args)
- {
- //创建分部类对象,输入属性值
- Singer sin = new Singer();
- Console.Write("请输入sin对象的Cn属性值:");
- sin.Cn = Console.ReadLine();
- Console.Write("请输入sin对象的Am属性值:");
- sin.Am = Console.ReadLine();
- //输出
- Console.WriteLine("/n读取结果,Cn={0},Am={1}", sin.Cn, sin.Am);
- //调用getmsg方法
- sin.getmsg("中美合作", 50);
- }
- }
- }
运行结果:
标签:部类,partial,string,C#,System,分部,using,方法 来源: https://www.cnblogs.com/wwwbdabc/p/11683349.html