分部类

  1. public partial class Employee
  2. {
  3. public void DoWork()
  4. {
  5. }
  6. }
  7. public partial class Employee
  8. {
  9. public void GoToLunch()
  10. {
  11. }
  12. }

编译时将对分部类型定义的属性进行合并

  • 所部类在编译时会将所有分部类类中定义的以下内容进行合并:

    • XML 注释
    • interfaces
    • 泛型类型参数属性
    • 类属性
    • 成员
  • 例如,下面的声明:

  1. partial class Earth : Planet, IRotate { }
  2. partial class Earth : IRevolve { }

等效于:

  1. class Earth : Planet, IRotate, IRevolve { }

分部方法

  • 分部方法只可以定义在分部类中
    • 分部方法返回值必须为void
  • 分部方法可以有参数(包含被this、ref或params修饰的参数,但不能有out修饰符)
  • 分布方法不能具有访问修饰符或virtual、abstract、override、new、sealed或者extern修饰符
  • 当分部方法没有实现代码时,C#编译器会在编译时删除其调用语句。

例子

  1. static partial class CarProperty
  2. {
  3. public static bool Move(int s)
  4. {
  5. Accelerate(s);
  6. return true;
  7. }
  8. static partial void Accelerate(int s);
  9. }
  10. static partial class CarProperty
  11. {
  12. static partial void Accelerate(int s)
  13. {
  14. MessageBox.Show(s.ToString() + "已加速!");
  15. }
  16. }