C#partial关键字详解.docx_第1页
C#partial关键字详解.docx_第2页
C#partial关键字详解.docx_第3页
C#partial关键字详解.docx_第4页
C#partial关键字详解.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

C# partial关键字详解partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类存储在单个文件中。但有时,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类放在多个文件中是有益的。partial关键字的用法是:把partial关键字放在class,struct或interface关键字前面。我在下面用几个例子作说明:含有三个类文件:PartialClassPart1.cs,PartialClassPart2.cs,Program.cs,两个部分类分别置于前面两个类文件中,各有一个方法。【PartialClassPart1.cs】using System;namespace PartialClass partial class partialClass public void Method1() Console.WriteLine(PartialClassPart1-partialClass-Method1); 【PartialClassPart2.cs】using System;namespace PartialClass partial class partialClass public void Method2() Console.WriteLine(PartialClassPart2-partialClass-Method2); 代码执行类【Program.cs】using System;namespace PartialClass class Program static void Main(string args) partialClass Pc = new partialClass(); Pc.Method1(); Pc.Method2(); Console.ReadKey(); 结果:可能有人会想Method1和Method2可不可以名字相同?你觉得能相同吗?呵呵!另外一个例子:/BigClassPart1.csCustomAttributepartial class TheBigClass:TheBigBaseClass,IBigClass public void Method1();/BigClassPart2.csAnotherAttributepartial class TheBigClass:IOtherBigClass public void Method2();编译后的结果:CustomAttributeAnotherAttributepartial class TheBigClass:TheBigBaseClass,IBigClass,IOtherBigClass public void Method1(); public void Method2();-注意点,总结:如果声明类使用了下面的关键字,这些关键字将应用于同一个类的所有部分:public,private,protected,internal,abstract,sealed,new ,一般约束。在嵌套的类型中,只要partial关键字位于class关键字的前面,就可以嵌套不分类。在把部分类编译到类型中时,会合并属性,XML注释,接口,泛型类型的参数属性和成员。 partial 关键字的作用是将你的 class 分为多个部分,编译器会将多个部分拼到一起去。 public partial class SampleClass . public void MethodA() . public partial class SampleClass . public void MethodB() . 和 public class SampleClass . public void MethodA() . public void MethodB() . 是等价的。 我猜想这个东西出现的初衷是为了解决掉:“窗体设计器生成的代码”这个令人讨厌的 region。 对我们来说,在团队开发当中这个东西或许也会有点用处。 我观察了一下生成的 IL 代码,使用 partial 生成的代码并没有什么特殊的标记,这说明 partial 纯粹是语言的特性,CLR 完全不知道这么个玩意的存在,这也就意味着不要指望将 partial class 编译为 assembly 或者 module 什么的再与其他的人写的 partial class 去进行拼接:它只能在编译的时候起作用。 为了考验一下编译器,我试着让某一个 partial class 不显式指定父类,发现代码仍然能够正确的通过编译,编译器会按照某一个显式指定了父类的 partial 进行编译,只有在多个 partial 指定了不同父类时才会报错。同样,如果多个 partial 指定了自相矛盾的修饰符的话,编译时也会报错的。 有意思的是,我们还可以写以下这样的代码: public partial class Sample . public partial class SampleSon . public partial class Sample

温馨提示

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

评论

0/150

提交评论