CSharp3新特性之六:分部方法

来源:互联网 发布:yy网络兼职频道 编辑:程序博客网 时间:2024/05/15 05:52
 

CSharp3新特性之六:分部方法

参考:http://blog.csdn.net/aspnet2002web/article/details/5876588
搜集整理:sagahu@163.com
日期:2012-01-04

分部类是在C#2.0提供的语法特性,从C#3.0又提供了分部方法这个新语法特征。

将一个类的代码分成多个同名类(可以放在不同名的文件里),类名前加上 partial 关键字,编译时会被完整的编译到一起,这称为部分类。

从C#3.0,可以在分部类里建立分部方法:方法名前加上 partial 关键字;方法的声明与方法的实现放在不同的分部类里面(分部方法只能将方法分成声明与实现两个部分,从而放在两个不同的分部类里面)。

下面一段简单的演示代码:

    class Program    {        static void Main(string[] args)        {            (new PartialClass()).method2("Hello world");        }    }    partial class PartialClass    {        partial void method1(string s); // 声明一个分部方法    }    partial class PartialClass // 分部类可以放在不同的文件里    {        partial void method1(string s) // 实现分部方法        {            Console.WriteLine(s);        }        public void method2(string s)         {            this.method1(s); // 分部方法必须是私有的,无论实例方法或者静态方法        }    }        

分部方法的意义

分部方法存在的目的在于,编码者有时希望在代码文件中留下一些可以未来有机会再写的方法函数,以后可以让其它编码者编写这些分部方法的代码,就算是没有人实现了这些分部方法,它也不会对性能产生丝毫的影响。

分部方法的使用规则:

  • 分部方法只能在分部类中定义和实现。
  • 分部方法必须指定partial修改符。
  • 分部方法是私有的,但是不能指定private修改程序,否则会产生编译错误。由于分部方法必须是私有方法,所以不允许使用abstract、virtual、override、new、sealed、extern等关键字,可以使用internal关键字。
  • 分部方法必须返回void类型。
  • 分部方法可以是未实现的方法。
  • 分部方法可以是静态的。
  • 分部方法可以有参数;可以有ref参数,但不能有out参数。
  • 不允许将委托转换为分部方法。