C#分部类和分部方法的使用

时间:2022-06-10 21:16:51

将同一个类编写在多个文件中,类的各个文件名不同,类名相同,类名前加partial关键字,这种类型叫分部类。

在分部类中可以建立分部方法,方法名前加关键字partial,分部方法只能将方法分成两部分,即声明部分和实现部分分别位于不同的分部类里。分部方法可以使静态方法,但必须是隐式的私有方法,并且无返回值的方法,因为分部方法时私有方法,所以无法使用virtual修饰符,即不能成为虚方法;分部方法可以有ref参数,但不能有out参数;不允许将委托转换为分部方法。

下例中首先建立项目PartialTypes,主类文件为Program.cs,在项目中添加一个类文件SingerDefine.cs,类名为Singer,再添加另一个类文件SingerImp.cs,类名为Singer。类名前都加partial修饰符

SingerDefine.cs文件里声明两个私有字段和两个分布方法,方法名前加关键字partial,代码如下:

[c-sharp] 

 

 

 

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] 

 

 

 

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] 

 

 

 

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);  

  

        }  

    }  

}  

运行结果:

C#分部类和分部方法的使用

标签:

原文地址:https://www.cnblogs.com/wwwbdabc/p/11683349.html