C# 分部类与分部方法

一.定义

  分部方法是指能够使编码人员跨多个代码文件实现类型的语法。简而言之。它可以让我们在一个文件中构建方法原型,而在另一个文件中实现

  使用分部方法和分部类需要使用关键词partial,且紧靠在class、struct、interface或void之前。

  每一个分部类型必须有完全相同的限定名。

二.注意事项

  1.分部方法只可以定义在分部类中

  2.分部方法返回值必须为void

  3.分部方法可以是静态的或实例级别的

  4.分部方法可以有参数(包含被this、ref或params修饰的参数,但不能有out修饰符)

三.分部类

  1.分部类就是将接口、结构、类或者方法的拆分到两个或多个文件中。而编译时会将所有分部编译在一起

  2.要求和分部方法类似:关键字partical,分部类之间可访问性,抽象、静态、都必须是相同的。

  3.各个分部类之间可以相互调用其参数,方法等

  4.各个分部类继承的接口和基类都是共同继承的

四.举例

  为了看到分部方法的定义,新建个类CarProperty,定义个方法Move,在方法内部有个分部方法Accelearte

static partial class CarProperty
    {
        public static bool Move(int s) {
            Accelerate(s);
            return true;
        }
       static partial void Accelerate(int s);
    }

  此时在MainWindow下面添加代码,运行

 public MainWindow()
        {
            InitializeComponent();
            CarProperty.Move(20);
            MessageBox.Show("所有动作都已结束");
        }

  结果是除了“所有动作已结束”之外没有任何其他动作。

  在其他分部或者没有分部为Accelerate()方法添加内容时,该方法在编译时是被忽略的,所以不会有任何动作

  下面再新建个类,作为分部类,实现Accelerate方法。

 static partial class CarProperty
    {
        static partial void Accelerate(int s)
        {
            MessageBox.Show(s.ToString()+"已加速!");
        }
    }

  注意分部类的关键词和访问级别都是相同,运行程序,可见Accelerate()方法已完全实现。

五.用途

  在使用过程中,需要应用的方法可以在分部类内写出具体实现内容。在不需要应用该方法时可以注释掉,然后运行程序。

六.示例代码