partial关键字简介
2012-07-19 08:21
190 查看
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其中的一个。
看下面的定义:
[align=left][/align]
public partial class Employee
{
public void DoWork()
{}
}
public partial class Employee
{
public void GoToLunch()
{}
}
[align=left][/align]
以上代码定义了一个类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()
{}
}
其中有几点需要注意:
1. 要作为同一类型的各个部分的所有分部类型定义都必须使用 partial 进行修饰。下面这样就错误
public partial class A { }
//public class A { } // Error, must also be marked partial
2.partial 修饰符只能出现在紧靠关键字 class、struct 或 interface 前面的位置。
3. 分部类型定义中允许使用嵌套的分部类型。当然,如果嵌套类也是partial类的话,同样遵守上面的规则。例如:
partial class ClassWithNestedClass
{
partial class NestedClass { }
}
partial class ClassWithNestedClass
{
partial class NestedClass { }
}
4. 要成为同一类型的各个部分的所有分部类型定义都必须在同一程序集和同一模块(.exe 或 .dll 文件)中进行定义。分部定义不能跨越多个模块。
5. 类名和泛型类型参数在所有的分部类型定义中都必须匹配。泛型类型可以是分部的。每个分部声明都必须以相同的顺序使用相同的参数名。
以上参考MSDN,如有错误之处请指出。Mail to:zabcd117@gamil.com
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其中的一个。
看下面的定义:
[align=left][/align]
public partial class Employee
{
public void DoWork()
{}
}
public partial class Employee
{
public void GoToLunch()
{}
}
[align=left][/align]
以上代码定义了一个类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()
{}
}
其中有几点需要注意:
1. 要作为同一类型的各个部分的所有分部类型定义都必须使用 partial 进行修饰。下面这样就错误
public partial class A { }
//public class A { } // Error, must also be marked partial
2.partial 修饰符只能出现在紧靠关键字 class、struct 或 interface 前面的位置。
3. 分部类型定义中允许使用嵌套的分部类型。当然,如果嵌套类也是partial类的话,同样遵守上面的规则。例如:
partial class ClassWithNestedClass
{
partial class NestedClass { }
}
partial class ClassWithNestedClass
{
partial class NestedClass { }
}
4. 要成为同一类型的各个部分的所有分部类型定义都必须在同一程序集和同一模块(.exe 或 .dll 文件)中进行定义。分部定义不能跨越多个模块。
5. 类名和泛型类型参数在所有的分部类型定义中都必须匹配。泛型类型可以是分部的。每个分部声明都必须以相同的顺序使用相同的参数名。
以上参考MSDN,如有错误之处请指出。Mail to:zabcd117@gamil.com
相关文章推荐
- C#中关键字partial的作用
- 《C#高级编程》笔记系列第三弹-partial关键字
- 开放系统理论(2)简介和一些关键字——一般之意
- 【C语言】C语言32个关键字简介和9种控制语句
- Explicit 关键字简介
- partial 关键字处理
- c#中的partial关键字(转)
- C# 参考之上下文关键字get、set、value、partial、where和yield
- C#中default关键字用法简介
- C 语言中 typeof 关键字简介
- C语言 关键字简介
- C#里partial关键字的作用(转摘)
- typeof关键字简介
- volatile关键字简介
- C#里partial关键字的作用
- C#中partial关键字
- C# partial 关键字分析
- 黑马程序员-C语言简介、关键字、标识符、命名规范、注释
- partial关键字
- partial关键字的含义和使用