1.char在C#中为16位Unicode字符;int 映射到System.Int32;long映射到System.Int64。

2.重载时C#不考虑返回值,而CLR允许返回值不同,方法名和参数相同的重载。

3.callvirt调用方法时会验证变量是否为NULL,如果是则无法判断变量的实际类型从而抛出异常,因此callvirt执行速度比call慢。对于引用类型,C#编译器通常使用call调用静态方法,使用callvirt调用实例方法和虚方法(在重载方法中调用父类的虚方法,该方法调用会编译成call,否则将会递归调用本身造成栈溢出)。对于值类型,编译器倾向于使用call,因为值类型都是密封的,且永远不为null。

4.可以通过反射修改只读字段。

5.抽象类的默认构造器为protected,静态类在元数据中是static and sealed.

6.值类型没有默认的无参构造器,且C#不允许显式声明无参构造器,显式声明的构造器必须被显式调用

7.编译器根据属性的get set生成相应的方法,以及元数据的一个属性定义。简单的get set方法会内联到所调用的方法里以避免调用的开销。

8.事件编译时生成一个委托类型的字段,以及封装了delegate的combine,remove方法的add_xx,move_xx方法,以及元数据中的事件记录项。

9.对含有泛型的类型参数的方法进行JIT编译时,引用类型参数可以互相共享代码,因为引用类型的参数都是指向堆上的指针。

10.string的Format方法会调用每个对象的ToString方法获取对象的字符串表示,然后拼接在一起返回完整的字符串。

11.拆箱不是装箱的逆过程,而是获得指向包含在装箱对象中原始值类型的指针。拆箱不会在内存中复制,所以代价远小于装箱,但是拆箱之后往往紧接着一次复制操作。

12.Delegate类有两个公共属性:Target返回私有字段_target,如果委托包装的是静态方法则为null,实例方法则为回调方法要操作的对象;Method返回_methodPtr转换成的MethodInfo对象,_methodPtr标识要回调的方法。

13.JIT编译方法时,会检查代码引用了哪些类型,并检查对于当前AppDomain是否已经执行类型构造器初始化类型。JIT编译器可以选择两种形式对静态构造器进行调用:刚好在创建类型的第一个实例前(Precise);在首次访问静态字段或静态/实例方法,或是实例构造器前,随便一个时间调用(BeforeFieldInit)。第二种为首选,如果一个类包含显式静态构造器,则不会添加BeforeFieldInit元数据标记。

14.对象的类型对象指针指向它的类型对象,而它的类型对象的类型对象指针指向System.ValueType,System.ValueType的类型对象指针指向自己(类型对象在Loader堆上)。

15.进程初始化时,CLR所保留的一块地址空间即为托管堆,托管堆维护一个NextObjPtr指针指向下一个对象在堆中的位置。托管堆中连续创建的对象的内存分配是连续的。

16.如果创建新对象时该对象定义了 Finalize方法,该对象的一个指针将会添加到 finalization list(从System.Object继承的除外),GC开始时该对象指针将从 finalization list转移到freachable队列。之后一个高优先级的CLR线程专门负责调用Finalize方法。下一次GC开始后,这些对象会被回收。

17.finalize不能显式调用,实现IDisposible的Disposible方法可以显示进行资源清理(Disposible方法中应调用GC的静态方法SupressFinalize,阻止CLR将对象指针从 finalization list转移到freachable队列,从而阻止对象"活到下一次GC")。

 

CLR via C# 阅读笔记的更多相关文章

  1. CLR via C#学习笔记----知识总概括

    第1章 CLR的执行模型 托管模块的各个组成部分:PE32或PE32+头,CLR头,元数据,IL(中间语言)代码. 高级语言通常只公开了CLR的所有功能的一个子集.然而,IL汇编语言允许开发人员访问C ...

  2. 《C#程序设计教程 -李春保》阅读笔记

    <C#程序设计教程 -李春保>阅读笔记   ( 需注意程度:红>粗体>下划线,蓝色:我的疑问 )   老师的引言 [师]对待一种新语言的关注点 数据类型定义(python不用定 ...

  3. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  4. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  5. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  6. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  7. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  8. Hadoop阅读笔记(七)——代理模式

    关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...

  9. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

随机推荐

  1. Opencv2.4.4作图像旋转和缩放

    关于下面两个主要函数的讲解: cv::getRotationMatrix2D(center, angle, scale); cv::warpAffine(image, rotateImg, rotat ...

  2. OC基础16:复制对象

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.浅复制即是指针赋值,复制对象的修改会影 ...

  3. Web服务器压力测试一例

    近期部门新上线一个服务,我们使用ab和locust分别测试 目前项目属于demo阶段,对访问量的支持不要求太高,我们暂且设定在500请求,20并发 工具介绍 ab ab全称为:Apache HTTP ...

  4. huffman 编码

    huffman压缩是一种压缩算法,其中经典的部分就是根据字符出现的频率建立huffman树,然后根据huffman树的构建结果标示每个字符.huffman编码也称为前缀编码,就是每个字符的表示形式不是 ...

  5. 【稳定婚姻问题】【HDU1435】【Stable Match】

    2015/7/1 19:48 题意:给一个带权二分图  求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...

  6. UVA1600 Patrol Robot

    题意: 求机器人走最短路线,而且可以穿越障碍.N代表有N行,M代表最多能一次跨过多少个障碍. 分析: bfs()搜索,把访问状态数组改成了3维的,加了个维是当前能跨过的障碍数. 代码: #includ ...

  7. .net 加密错误:填充无效,无法移除

    今天用System.Security.Cryptography加密.使用了AesManaged,报错:填充无效,无法移除.分析是解密失败,密文损坏,或者KEY,IV不正确. using (AesMan ...

  8. MongoDB 操作

    通过CMD命令操作数据 确保MongoDB的服务已经正常安装,记下安装目录(D:\MongoDB\Service) 然后打开cmd 先转到D盘 cd D: 然后转到服务的安装目录下 cd D:\Mon ...

  9. ARP网关占用

    30网段已经发生了2次ARP了 排查方法:我直去核心交换机直连镜像口,用wireshark抓包,过滤出ARP的包 发现的确有ARP的攻击,因为没有统计公司电脑和无线路由的MAC地址,所以只能一个个把无 ...

  10. WebService到底是什么

    WebService到底是什么 http://blog.csdn.net/wooshn/article/details/8069087 张孝祥WebService  http://wenku.baid ...