随笔分类 - CLR学习笔记
记录我学CLR的过程和知识点
摘要:当CLR开始加载一个Microsoft Windows进程,在这个进程中可能存在多个线程,当一个线程创建时,它会分配到一个1M大小的堆栈,这个堆栈空间用于向方法传递实参,并用于存储方法内部定义的局部变量,上图展示了一个线程的堆栈内存(右侧)。堆栈是从高位内存地址向低位内存地址构建的,在图中,该纯种执行了一 些代码,它的堆栈上已经有一些数据(显示成堆栈顶部的阴影区域),现在假定线程执行的代码要调用M1方法...
阅读全文
摘要:CLR允许将一个对象强制转换成它原来的类型或者它和任何基类型。C#要求将一个对象显式的转换成它的任何派生类型...使用is和as进行转换...
阅读全文
摘要:CLR集成了很多种语言,并让它们之间可以相互访问,是因为CLR建立的标准的类型集、元数据、公共执行环境。但由于各种语言间存在着极大的差别,如区分大小写,有的不支持unsigned、操作符重载或者参数可变的方法,所以要想创建这种让别的语言能访问的程序,自己所用的编程语言只能使用其它语言都支持的那些特性。为了帮助我们更好的做到这一点,Microsoft定义了一个"公共语言规范(Common Language Specification,CLS)"...
阅读全文
摘要: 前面已经知道了什么是托管代码、IL、元数据、程序集等,现在总体来看看咱们写的代码是在DotNet平台下是个怎么运行的...
阅读全文
摘要:元数据是一个二进制数据块,它由几个表构成,这些表分为三个类别:定义表(definition table)、引用表(reference table)、以及清单表(manifest table)...
阅读全文
摘要:不安全代码就是要写在unsafe命名空间下,对内存地址直接操作的代码。在默认情况下C#编译器生成的是安全代码,在编译不安全代码时,C#编译器要求我们使用/unsafe编译器开关来编译源代码,在IDE中,选中“项目属性->生成”里的“允许不安全代码”,编译时就会自动加上/unsafe选项。
阅读全文
摘要:程序集的概念、组成、作用、和命名空间的区别...
阅读全文
摘要:介绍托管模块的组成,PE32或PE32+头、CLR头、元数据、中间语言...
阅读全文
摘要:Jeffrey Richter《框架设计(第二版)CLR Via C#》一书前面提到的一些概念,托管与非托管,x32,x64,x86,IA32...理解后对学习阅读很有帮助
阅读全文

浙公网安备 33010602011771号