有一次面试的时候,面试官问我,知道部分类吗?
我说知道,用partial 关键字修饰的类就是部分类
他问,你知道为什么要有部分类吗?
我愣着了,这个问题我没想过,而且平时的时候都没怎么用到过部分类,我答不上来。。
现在我查阅资料了解了一下,下面分享一下我认识的部分类。
部分类是用partial声明的类,它允许我们把一个类分割成两个或多个类,当应用程序编译的完成的时候,多个部分类会结合成一个类,同时partial关键字也可以用于声明结构和接口。
那么下面问题来了,为什么要有部分类呢?
既然微软创造了这么一个东西,肯定有它存在的意义的
存在意义之一:
如果大家留意的话,会发现我们创建的webform程序或者windowform程序时,默认情况下会自动生成两个文件:webfrom1.aspx.cs和webform1.aspx.designer.cs,然后你会发现这两个类都用了关键字partial去声明了,没错,这就是部分类应用的所在,我认为它是为了code-behind技术而生的,因为声明了部分类,系统自动生成的代码和我们自己打的代码得以分离,已于代码的阅读和理解,提高开发效率。
存在意义之二:
处理大型项目时,把一个复杂的类可以分成多个部分类给多个程序员同时进行开发。不过,微软声明这是一个好处,除了上面说的例子之外,我没在其他地方见过的使用部分类,使用分部类的就让让多个部分类一起工作而已。。。
下面就是部分类在使用的时候注意的几点
一:如果声明了一个部分类,另一个类和部分类的类名相同的话编译是不通过的,必须两个都是部分类才能编译通过
二:多个部分类的访问修饰符要一致。
三:如果一个部分类为抽象或者密封类,那么所有的部分类都要声明为抽象或者密封类
四:如果部分类为派生类,那么其基类要相同
部分方法
在部分类中声明为partial的方法
当一个方法声明为partial时,不能有方法体,你只能声明方法,不能实现它,或者声明之后,再写一个同名的方法,这时就可以有方法体,可以有实现方法的代码,或者在这个部分类声明方法,在另一个部分类中声明和实现它。
部分方法的默认修饰符是private,所以不可以再用private去修饰它,而且部分方法的不可以有返回值,也就是说只能是void。