《Essential .Net》读书笔记 - Chapter 3

2016-01-29 13:03 0 1 收藏

《Essential .Net》读书笔记 - Chapter 3,《Essential .Net》读书笔记 - Chapter 3

【 tulaoshi.com - ASP.NET 】

Chapter 3
1. 工作人员划分了程序集以后,他们大部分时间就用来考虑类型如何工作,如何联系了。所有的表示类型的构建(类,结构,枚举等)最终会映射到CLR的类型定义上。
2. CLR类型(CLR type)是命名的可重用抽象体。CLR类型的描述存放在CLR模块的元数据中,该模块还包含是类型工作所需要的CIL或者本机代码。
3. 完全限定的CLR类此哪个名包括三个部分:程序集名字、可选的命名空间前缀和类型名称。
4. 公共类型系统比大多数编程语言所能处理的类型要宽得多。提交给ECMA的CLI部分被划分为一个CTS子集,它能被所有CLI兼容的语言支持。这个子集叫做CLS(Common Language Specification,公共语言规范)。组件强烈推荐开发者使用符合CLS的规范以增强组件的可访性功能。CLI定义了一个特性System.CLSCompliant,它指示编译器对所有公有成员实施CLS遵从性检查。
5. CLR类型定义由零个或多个成员(member)组成。类型的每个成员都有自己的访问修饰符(access modifier)控制对于成员的访问。按实例访问(per-instance member)/ 按类型访问(per-type member,即static/Shared等)。
6. CTS有三种基本类型的成员:字段、方法和嵌套类型。字段是一个命名的存储单元,它隶属于所声明的类型。方法是一个命名的操作,它可以被调用和执行。嵌套类型则是一种简单的辅助类型。其他类型成员(属性、事件)是以附加元数据的形式出现的方法。
7. 类型的字段控制内存如何分配。CLR使用类型的字段来决定分配多少内存给这个类型。CLR会给static字段分配一次内存(类型首次加载时)。
8. CLR每次分配类型实例时,都会为non-static字段分配内存。
9. 在分配内存时,CLR初始化static字段并赋予默认值。数值类型默认为零,布尔类型默认为false,引用类型为null。
10. 默认情况下,确切的内存布局是不透明的。CLR使用虚拟内存布局,并且会经常重新排序字段以优化访问和使用。

11. const在编译时会被内联进所有使用它的地方(注意这样做带来的现象),const字段在初始化值在编译时必须是已知的;initonly字段CLR会在引用处调用它的值,initonly字段只能在声明时或者构造函数里赋值。
12. CLR允许方法为最后一个参数使用[System.ParamArrayAttribute]特性。
13. 由于编译器可能有不同的特性,所以尽量使用明确的重载。
14. 嵌套类型往往定义为辅助对象,如迭代器、序列化器。
15. 嵌套类型能防止对命名空间的污染。CLR的嵌套类型总是被声明为静态成员,它不隶属于任何特定的实例,嵌套类型的名字有外部类型名字限定。
16. 嵌套类型能做到对声明类型的私有成员进行无限制访问。
17. 静态字段初始化顺序:声明à静态构造函数(.cctor)。
18. CLR将静态初始化方法的调用延迟到第一个静态字段被访问的时候(beforefieldinit特性)。静态初始化方法在生成这个类的实例之前不一定会被调用。
19. 当基类型和派生类型存在同名的方法时,CLR支持两种基本的策略:按名字隐藏(hide-by-name)和按签名隐藏(hide-by-signature)。通过在派生类的方法上上添加hidebysig元数据特性与否来确定。C#总是按签名隐藏的。
20. 强烈推荐不要在一个non-sealed类型的构造函数中调用虚方法,因为派生类的虚方法的部分还没有执行到,因此可能会导致不可预见的问题
21. 构造派生类时的执行顺序:初始化派生类字段à构造基类à调用派生类(构造基类是一个递归的过程)。
22. 为了保证派生类正确地调用基类的构造函数,可以把基类的构造函数修饰为internal,这样保证了只有自己写的程序集才能够调用该构造函数。

来源:https://www.tulaoshi.com/n/20160129/1488706.html

延伸阅读
标签: Web开发
基本的CSS选择器 熟悉web开发的人员一定对css的选择功能相当的了解,通过css选择功能,我们可以在css样式文件里轻松的将样式应用到选择的页面元素上。jQuery也正是采用了这样的机制,使jQuery的元素选择能力易常强大。 a——选择所有a元素 #specialID——选择匹配id为specialID的元素 .specialClass——选择匹配拥有css类sepcialClass的元素 a...
Introducing LANs and their components 基本内容:描述网络拓扑描述局域网介质描述网络设备 总线拓扑是典型的局域网拓扑结构,所有的设备通过连接到一条同轴电缆或双绞线来进行交流星型拓扑被广泛用于今天的局域网网络环境,它的具体结构是以集线器或中间件为中心向各个方向扩展,以 便连接到不同的设备.智能化的集线器可以控制端口间传输的信...
Describing Ethernet interfaces 基本内容:描述以太网概念描述以太网的帧使用网络的效用 以太网标准实施在TCP/IP协议模型的网络接口层以太网网络的三个重要组成部分是:1,以太网包又称为帧,这些数据单元在网络上传输2,以太网访问方法CSMA/CD用来控制包的传输和信息的流量控制3,硬件电缆,连接器,电路,用于和网络之间的数据传输 CSMA/CD...
Introducing the TCP/IP model 基本内容:描述网络模式的基本原理描述TCP/IP模型的层次描述基本对等交流和相关的协议 数据传输协议是用于设备间交流信息的规则,描述了:语法:数据格式和编码语义:控制信息和纠错能力时间选择:速度的匹配和先后顺序 TCP/IP模式是提供给solaris系统用于数据交流的协议栈下面的映射关系使你更加清楚的理解网络模...
  最近一直在看《Unix网络编程》这本书,觉得这本书很适合初学socket编程的人(比如说我自己 ^_^ )。我一直对于多播的实现比较模糊,在看了书上的多播部分的介绍,才发现在程序中实现一个基本的多播功能是如此简单。   在这里我不想照本宣科的大说什么理论,概念的东东,我的目的是说明在我们的代码中如何实现多播功能。   开...

经验教程

724

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部