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

一.所有类型都是从System.Obejct派生 1.下面两个类型定义是完全一致的: class Employee{ ... } class Employee:System.Object{ ... } 2.System.Object的公共实例方法 a.Equals 判断对象是否具有相等的值 b.GetHashCode 返回对象值的哈希码 c.ToString 该方法默认返回类型的完整名称( this.GetType().FullName ) d.GetType 返回从Type派生的一个对象的实例…
1.windows永远不会调度一个进程,只调度线程. 2.线程和操作系统的关系:CLR(X)--AppDomain--线程池(包含工作者线程和I/O线程) 3.线程的关键组成部分 A.线程执行上下文 占用的空间: o x86->700字节内存 x64->1240字节内存 o IA64->2500字节内存 B.线程环境块(用户模式下应用程序能快速访问的地址空间),占用空间为1个内存页,在x86和x64系统中卫4KB,在IA64系统下为8KB. C.用户模式栈,占用1MB内存空间. D.内核…
第一部分 CLR基础 CLR和JIT “运行时”如何解析类型引用 第二部分 设计类型 使用C#的is和as操作符来转型 运行时的相互联系 基元类型.引用类型和值类型 值类型的装箱和拆箱 哈希码 dynamic基元类型 类型各种成员 CLR如何调用虚方法.属性和事件 第三部分 基本类型 第四部分 核心机制 第五部分 线程处理…
1.is 和 as 的区别 public class Employee { } a): object obj = new Employee(); if (obj is Employee) { Employee e = (Employee)obj; //do something.... } b): object obj = new Employee(); Employee e = obj as Employee; if (e != null) { //do something... } 以上a和b…
我们都知道CLR最重要的一个特性就是类型安全,它在运行时就知道对象类型. 但我们会经常用到将一种类型转换成另一种类型,CLR也允许将对象转成他的实际类型,或者是它的基类型. 在C#中,支持隐士转换成它的基类型. 类型转换会用到以下方式: public class EntityBase { public int Id {get; set;} } public class User { public string Name {get; set;} } ..... public static void…
最近开始仔细研读<CLR.via.C#第三版>这本书.读pdf文档确实很累.建议有条件的朋友还是买书看吧. 我的笔记用来记录我对这本书的理解,简化下逻辑,对每个部分我觉得是要点的进行归纳总结.特别基础的东西不会做过多的阐述. 第一部分讲的是CLR基础. 首先还是重新说下CLR的概念:“CLR 是一个可由多种编程语言使用的“运行时”.可用任何编程语言来开发代码,只要编译器是面向CLR的就可以了”.这里要重新解释下“只要编译器是面向CLR的就可以了”这句话.初学者一般不认同.net平台跨语言,或者…
编程语言的基元类型 编译器直接支持的数据类型称为基元类型.基元类型直接映射到Framework类库中存在的类型.例如:C#中的int直接映射到System.Int32类型.下表给出了C#基元类型与对应的FCL类型 C#规范中写道从风格上说,最好是使用关键字,而不是使用完整的系统类型名称,但作者认为最好使用FCL类型名称 许多开发人员纠结于到时使用string还是String.由于C#的string关键字直接映射到System.String,所以两者没有区别.有些人说应用程序在32位操作系统运行,…
第1章 CLR的执行模型 托管模块的各个组成部分:PE32或PE32+头,CLR头,元数据,IL(中间语言)代码. 高级语言通常只公开了CLR的所有功能的一个子集.然而,IL汇编语言允许开发人员访问CLR的所有功能. JITCompiler函数负责将一个方法的IL代码编译成本地CPU指令.由于IL是“即时”(just in time)编译的,所以通常将CLR的这个组件称为JITter或者JIT编译器. Microsoft定义了一个“公共语言规范”(Common Language Specific…
6.1 类型的各种成员 在一个类型中,可以定义0个或者多个以下种类的成员: 常量 常量是在编译时设置其值并且永远不能更改其值的字段.使用常量可以为特殊值提供有意义的名称以代替数字文本,以使代码变得更容易阅读及维护.定义常量请使用关键字const.private const Int32 SomeConstant = 1; 字段 字段存储着类满足其设计所必须拥有的数据.例如,表示日历日期的类可能有三个整数字段:一个表示月份,一个表示日期,还有一个表示年份.强烈建议将字段声明为私有字段,防止类型的状态…
5.1 基元类型 编译器直接支持的数据类型称为基元类型(primitive type). 以下4行到吗生成完全相同的IL int a = 0; //最方便的语法 System.Int32 b = 0; //方便的语法 int c = new int(); //不方便的语法 System.Int32 d = new System.Int32(); //最不方便的语法 C#基元类型与对应的FCL类型 C#中的基元类型 FCL类型 是否与CLS兼容 描述 sbyte System.SByte N 有符…