C#之 partial 关键字

参考
https://blog.csdn.net/susan19890313/article/details/7575204

1. 举例

新建一个Windows Form时,后台会自动添加如下代码

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
}

为什么新建立的 Winows Form 的类定义成了一个部分类?当打开Form1.Designer.cs 文件,可以看到,原来 Form1 的另一部分类是在这个文件中设计的。这个部分类中定义了我们使用的控件、事件委托以及如 Dispose 方法等。因为这里面的代码都是自动生成的,因此设计成了一个部分类。

2. 局部类型的适用情况与限制

局部类型适用于以下情况
① 类型特别大,不宜放在一个文件中实现;
② 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起;
③ 需要多人合作编写一个类。

局部类型的限制
局部类型只适用于类、接口、结构,不支持委托和枚举。
② 同一个类型的各个部分必须都有修饰符 partial。
使用局部类型时,一个类型的各个部分必须位于相同的命名空间中。
④ 一个类型的各个部分必须被同时编译。

3. 局部类型的注意点

① 关键字 partial 是一个上下文关键字,只有和 class、struct、interface 放在一起时才有关键字的含义,因此 partial 的引入不会影响现有代码中名称为partial的变量。
② 局部类型的各个部分一般是分开放在几个不同的 *.cs 文件中,但 C# 编译器允许我们将他们放在同一文件中。

4. 局部类型的修饰符

① 一个类型的各个部分上的访问修饰符必须维持一致性;
② 如果一个类型有一个部分使用了abstract修饰符,那么整个类都将被视为抽象类;
③ 如果一个类型有一个部分使用了 sealed 修饰符,那么整个类都将被视为密封类;
④ 一个类的各个部分不能使用相互矛盾的修饰符,比如不能在一个部分上使用abstract,又在另一个部分上使用sealed。

5. 局部类型的基类和接口

① 一个类型的各个部分上指定的基类必须一致,某个部分可以不指定基类,但如果指定,则必须相同。
(2) 局部类型上的接口具有“累加”效应。

partial class Class2: Iinterface1, Iinterface2 {}
partial class Class2: Iinterface3 {}
partial class Class2: Iinterface2 {}

相当于

class Class2: Iinterface1, Iinterface2, Iinterface3 {}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,891评论 2 9
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,004评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,748评论 0 4
  • 注:这是第三遍读《C语言深度解剖》,想想好像自从大学开始就没读完过几本书,其中谭浩强的那本《C语言程序设计(第四版...
    HavenXie阅读 5,739评论 1 6
  • 一则 妈妈是做微商的,微信朋友圈信息不断,妈妈非常勤奋的刷朋友圈,生意貌似非常的红火,孩子偶尔也会成为免费的广告,...
    娇杨妈妈阅读 2,555评论 0 1