zoukankan      html  css  js  c++  java
  • C#分部类和分部方法的使用

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

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

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

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

    [c-sharp] view plaincopy
     
     
     
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using System.Text;  
    5.   
    6. namespace PartialTypes  
    7. {  
    8.     internal partial class Singer  
    9.     {  
    10.         //声明两个私有字段  
    11.         private string _cn;  
    12.         private string _am;  
    13.   
    14.         //声明两个分布方法  
    15.         partial void getmsgA(string str);  
    16.         partial void getmsgB(int i);  
    17.   
    18.     }  
    19. }  

    SingerImp.cs文件里,包含分部方法的实现部分,分部方法组合成一个新方法,定义两个属性对私有字段进行读写,代码如下:

    [c-sharp] view plaincopy
     
     
     
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using System.Text;  
    5.   
    6. namespace PartialTypes  
    7. {  
    8.     internal partial class Singer  
    9.     {  
    10.         //两个分部方法的实现部分  
    11.         partial void getmsgA(string str)  
    12.         {  
    13.             Console.WriteLine("getmsgA方法所接收的参数是【{0}】,数据类型是【{1}】", str.ToString(), str.GetType());  
    14.         }  
    15.         partial void getmsgB(int i)  
    16.         {  
    17.             Console.WriteLine("getmsgB方法所接收的参数是【{0}】,数据类型是【{1}】", i.ToString(), i.GetType());  
    18.         }  
    19.   
    20.         //声明getmsg方法,调用两个分部方法  
    21.         internal void getmsg(string str, int i)  
    22.         {  
    23.             getmsgA(str);  
    24.             getmsgB(i);  
    25.         }  
    26.   
    27.         //声明两个属性,用于读取和写入两个私有字段  
    28.         internal string Cn  
    29.         {  
    30.             get  
    31.             {  
    32.                 return _cn;  
    33.             }  
    34.             set  
    35.             {  
    36.                 _cn = value;  
    37.             }  
    38.         }  
    39.         internal string Am  
    40.         {  
    41.             get  
    42.             {  
    43.                 return _am;  
    44.             }  
    45.             set  
    46.             {  
    47.                 _am = value;  
    48.             }  
    49.         }  
    50.     }  
    51. }  

    主程序文件调用分部类,及分部方法,代码如下:

    [c-sharp] view plaincopy
     
     
     
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using System.Text;  
    5.   
    6. namespace PartialTypes  
    7. {  
    8.     class Program  
    9.     {  
    10.         static void Main(string[] args)  
    11.         {  
    12.             //创建分部类对象,输入属性值  
    13.             Singer sin = new Singer();  
    14.             Console.Write("请输入sin对象的Cn属性值:");  
    15.             sin.Cn = Console.ReadLine();  
    16.   
    17.             Console.Write("请输入sin对象的Am属性值:");  
    18.             sin.Am = Console.ReadLine();  
    19.   
    20.             //输出  
    21.             Console.WriteLine("/n读取结果,Cn={0},Am={1}", sin.Cn, sin.Am);  
    22.   
    23.             //调用getmsg方法  
    24.             sin.getmsg("中美合作", 50);  
    25.   
    26.         }  
    27.     }  
    28. }  

    运行结果:

  • 相关阅读:
    OC基础--常用类的初步介绍与简单使用之NSDate
    mysql创建自定义函数与存储过程
    Hibernate Session 获取connection
    mysql中isnull,ifnull,nullif的用法
    mysql数据库中某项其中一个值在该项排第几,百分几
    linux下的ImageMagick安装方法
    Java 判断操作系统类型(适用于各种操作系统)
    tesseract 字体训练资料篇
    structDemo1
    C语言中.h和.c文件解析(很精彩)
  • 原文地址:https://www.cnblogs.com/wwwbdabc/p/11683349.html
Copyright © 2011-2022 走看看