partial关键字
C#2.0提供的新关键字,用来将一个class、struct或interface的定义拆分,写在不同的源文件中。每个源文件包含类定义的一部分,编译应用程序时将把所有部分组合起来。在以下几种情况下需要拆分类定义:
1.处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理。
2.使用自动生成的源时,无需重新创建源文件便可将代码添加到类中。Visual Studio 在创建 Windows 窗体、Web 服务包装代码等时都使用此方法。无需编辑 Visual Studio 所创建的文件,便可创建使用这些类的代码。
用法如下: [modifiers] partial type
modifier包括abstract new override virtual static extern和四个访问修饰符(public private protected internal)其中的一个。Type包括 class struct interface其中的一个。
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
{
public void GoToLunch()
{}
}
以上代码定义了一个类Employee,该类有两个方法DoWork()和GoToLunch(),你完全可以把以上代码看作是:
而实际上编译器在编译时也是这么合并的。编译器在编译时会把一个partial类所有的信息放到一起,我们可以再来扩充一下。假如我们已经定义好了两个接口:
我们的类定义如下: 这在开发分布式系统时是很有必要的,多个程序员只要分别开发自己的一部分就可以了。
public class Employee
... {
public void DoWork()
...{}
public void GoToLunch()
...{}
}
interface IDoSomeThing
... {
void DoWork();
void DoPlay();
}
interface IGoToDinner
... {
void GoToBreakfast();
void GoToLunch();
void GoToSupper();
}
![]()
public partial class Employee : IDoSomeThing
... {
public void DoWork()
...{}
public void DoPlay()
...{}
}
public partial class Employee : IGoToDinner
... {
public void GoToBreakfast()
...{}
![]()
[System.ObsoleteAttribute]
public void GoToLunch()
...{}
public void GoToSupper()
...{}
}
![]()
于是,在编译时编译器就把以上合并为一个类:
public class Employee : IDoSomeThing, IGoToDinner
... {
public void DoWork()
...{}
public void DoPlay()
...{}
public void GoToBreakfast()
...{}
![]()
[System.ObsoleteAttribute]
public void GoToLunch()
...{}
public void GoToSupper()
...{}
}
![]()
partial class ClassWithNestedClass
... {
partial class NestedClass ...{ }
}
partial class ClassWithNestedClass
... {
partial class NestedClass ...{ }
}
![]()
文章出处:http://blog.csdn.net/zabcd117/archive/2008/01/08/2029987.aspx