partial关键字的含义和使用.doc_第1页
partial关键字的含义和使用.doc_第2页
partial关键字的含义和使用.doc_第3页
partial关键字的含义和使用.doc_第4页
partial关键字的含义和使用.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

partial关键字 我们在开发WinForm时,经常会看到partial关键字,比如,我们新建一个Windows Form时,后台代码自动添加如下:1publicpartialclassForm1:Form23publicForm1()45InitializeComponent();67 C#高级编程书中说明:partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类存储在单个文件中,但有时,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类放在多个文件中是有益的。 也就是说,我们定义的一个类可以分开几个文件来存储,而各个文件都只是完成这个类的一部分功能。我们在使用这个类时,根本体会不到这个类是由几部分结合在一起共同组成的。比如我分别在两个地方定义了Box类的一部分:publicpartialclassBoxpublicBox(stringnewBoxName)boxName=newBoxName;/在这个部分类中,并没有出现boxName局部变量。但是却是可以使用的。publicvoidOpen()/打开盒子Console.WriteLine(boxName+isopened);publicpartialclassBoxprivatestringboxName=string.Empty;/boxName是在这个部分类中定义的哦publicvoidClose()/关闭盒子Console.WriteLine(boxName+isclosed); 上面的代码等同于下面的Box类:publicclassBoxprivatestringboxName=string.Empty;publicBox(stringnewBoxName)boxName=newBoxName;publicvoidOpen()/打开盒子Console.WriteLine(boxName+isopened);publicvoidClose()/关闭盒子Console.WriteLine(boxName+isclosed); 书中还有一段:在把部分类编译到类型中时,会合并属性、XML注释、接口、一般类型的参数属性和成员。 所以自己可以去设计一些小Demo去尝试一下。现在回到最开始的问题,为什么新建立的Winows Form的类定义成了一个部分类。我们打开Form1.Designer.cs文件,可以看到,原来Form1的另一部分类是在这个文件中设计的。这个部分类中定义了我们使用的控件、事件委托以及如Dispose方法等。因为这里面的代码都是自动生成的,因此设计成了一个部分类。OK,原来partial如此简单,就到这啦!partial关键字的含义和使用 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其中的一个。 看下面的定义:public partial class Employee. public void DoWork() .public partial class Employee. 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() . 其中有几点需要注意:1. 要作为同一类型的各个部分的所有分部类型定义都必须使用 partial 进行修饰。下面这样就错误public partial class A /public class A / Error, must also be marked partial2.partial 修饰符只能出现在紧靠关键字 class、struct 或 interface 前面的位置。3. 分部类型定义中允许使用嵌套的分部类型。当然,如果嵌套类也是partial类的话,同样遵守上面的规则。例如:partial class ClassWithNestedClass. partial class NestedClass . partial class ClassWithNestedClass. partial cla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论