您的位置:首页 > 编程语言 > C#

天轰穿C# -vs2010 - 04面向对象的编程之分部类 【原创】

2013-01-25 14:07 309 查看
小天:分部类,是不是指同一个类的代码分布在多个类文件中呢?和继承是不是一回事?

老田:你说的这个不是一回事。继承那是多个类之间的玩法,这个和文件之间是没有关系的。还记得前面我们说到过,类名字和文件名字不必相同(但最好是相同的)。其实前面的实例中也多次看到,在一个文件中是可以放多个类的。

至于你说让多个文件共同完成一个类。我想你要表述的应该是一个类的代码分布在多个文件中吧?

这个需要使用partial关键字来完成。partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类存储在单个文件中。但有时,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类放在多个文件中是有益的。

partial关键字的用法是:把partial放在class、struct或interface(接口,后面讨论)关键字的前面。在下面的例子中,ParClass类位于两个不同的源文件ParClass1.cs和ParClass2.cs中:

//ParClass1.cs 文件中的类

partial class ParClass //类名ParClass

{

/// <summary>

/// ClassA中的方法,这种情况下,练习的时候一定要加注释效果才明显

/// </summary>

public void MethodOne()

{

//方法体

}

}

//ParClass2.cs 文件中的类

partial class ParClass //类名ParClass

{

/// <summary>

/// ClassB中的方法

/// </summary>

public void MethodTwo()

{

//方法体

}

}

编译包含这两个源文件的项目时,会创建一个ParClass类,它有两个方法MethodOne() 和MethodTwo()。使用效果如图4-23:



图4-23

小天:我想到一个很严重的问题,按照你上面的例题来看,其实所谓的分部类,其实就是在多个文件中创建同名的类,而类前面增加了关键字partial。但是这个过程中,如果使用了封装中讲到的访问修饰符,那怎么算?

老田:如果声明类时使用了下面的关键字,这些关键字将应用于同一个类的所有部分:

● public

● private

● protected

● internal

● abstract

● sealed

● new

● 一般约束

在嵌套的类型中,只要partial关键字位于class关键字的前面,就可以嵌套部分类。在把分部类编译到类型中时,会合并属性、XML注释、接口、泛型类型的参数属性和成员。

小提示:其实最典型的分部类,就是Windows桌面应用程序中的窗体,在资源管理器中随便找到一个窗体文件,点开前面的 + 号,可以看见都有一个 “窗体名.Designer.cs”,点开他可以看见它的类定义的代码。然后在窗体上右键,查看代码,看这个类的定义部分。

本文章为天轰穿原创作品,转载请注明出处及作者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐