C# 2.0 的partial
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 SampleGrandson
...{
}
}
}
public partial class Sample
...{
public partial class SampleSon
...{
public partial class SampleGrandson
...{
}
}
}
C# 2.0 的partial相关推荐
- android5.0(Lollipop) BLE Peripheral深入理解系统篇之提高篇
上一篇文章讲到了广播之前系统需要进行的准备工作,那接下来我们就来真正的启动广播.首先还是先看一下上一篇文章结束的地方:@Override public void onClientRegistered( ...
- 程序从高版本降到2.0,数据集报错 TypedTableBase
错误 命名空间"System.Data"中不存在类型或命名空间名称"TypedTableBase"(是缺少程序集引用吗?) 解决: 该错误出现在自动生成的XX ...
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(二): NHibernate数据访问层实现
关于NHibernate的ORM映射可以通过Hbm映射文件来完成,代码生成工具使得这一步骤变得简化:而NHibernate3.2版本集成Mapping-By-Code(代码映射),不同于其他映射方式, ...
- C# partial 说明
1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型同意我们将一个类.结构或接口分成几个部分,分别实如今几个不同的.cs文件里. 局部类型适用于下面情况: (1) 类型特别大,不宜放在 ...
- DGM: A deep learning algorithm for solving partial differential equations
论文信息 题目: DGM: A deep learning algorithm for solving partial differential equations 作者及单位: Justin Sir ...
- Innovus和ICC2中设置partial placement blockage的命令和区别
Innovus中,设置partial placement blockage的命令是 createPlaceBlockage -type partial -density 75 -box {3442.3 ...
- 计量经济学复习笔记(四)updated2.0!
终于进入回归了regression! 回归就是探究因变量和自变量的相关关系 因变量,就是y,又被称为被解释变量,回归子,相应变量 自变量,就是x,又被称为解释变量,回归元,控制变量 根据变量个数可以将 ...
- 有限元基础及ANSYS应用 - 第9节 - 0 平面应力/平面应变问题简介
前面咱们讲的都是1维问题,下面咱们讲讲2维问题.实际上,所有的现实问题都是3维问题,可是在特定情况下,可以把它们简化为2维问题来分析.在弹性力学中,常见的有3类2维问题,即,平面应力.平面应变.轴对称 ...
- 快递单信息抽取【二】基于ERNIE1.0至ErnieGram + CRF预训练模型
相关文章: 1.快递单中抽取关键信息[一]----基于BiGRU+CR+预训练的词向量优化 2.快递单信息抽取[二]基于ERNIE1.0至ErnieGram + CRF预训练模型 3.快递单信息抽取[ ...
最新文章
- Linux 源代码在线(http://lxr.linux.no/linux/)。
- 数据的设计命名的十个要点
- Linq to Sql : 三种事务处理方式
- 高内聚低耦合通俗理解_抱歉,请不要把“业务逻辑层”理解为“业务中台”
- python struct pack一个数组_Python中struct.pack的一个疑问
- 翰文付费打印后还有水印吗_免费开通小程序商城?!有支付功能吗?
- 计算机系统如何禁止删除文件,电脑禁止安装删除文件 禁止复制电脑文件的方法...
- selenium拖动元素java_使用Java在Selenium WebDriver中聚焦元素的正确方法
- linux修改环境截图,Linux环境下php实现给网站截图的方法.docx
- 玩转USB HID系列:USB先导知识简明
- easyswoole验证码的使用
- springboot关闭http登录验证
- 电机驱动模块--L298N
- java实现断点续播_vue-video-player 断点续播的实现
- 强大的 Stream 函数式编程
- Python3脚本抢票
- 判断页面是否在微信或者企业微信环境下
- 通过不同的查询方式解决笛卡尔集问题
- 矿物质饲料补充剂的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 如何在CAD中加载卫星地图并作街道与建筑绘制
热门文章
- .pgr照片文件解析,C++与Java存储数据差别大小端模式
- opencv线性插值(上采样)
- Yolo模型部署的两种方法
- P1160 队列安排 链表
- 【面向对象编程】(2) 类属性的定义及使用;__repr__()方法
- 图像几何变换C++实现--镜像,平移,旋转,错切,缩放
- 剑指offer:面试题13. 机器人的运动范围
- 关于hp惠普笔记本电脑清洗(真的要水洗哟)
- vscode提交代码
- Unity粒子系统创建VFX游戏特效学习教程 Visual Effects in Unity Particle Systems [Beginner’s Guide]