摘要: CLR支持两种类型:引用类型和值类型。 虽然FCL中大多数都是引用类型,但开发人员用的最多的还是值类型。引用类型总是在托管堆上分配的,C#的new操作符会返回对象的内存地址——也就是指向对象数据的内存地址。 使用引用类型必须注意到一些性能问题,首先考虑一下事实: 1)内存必须从托管堆上分配。 2)对上分配的每个对象都有一些额外的成员(比如前面提到过得"类型对象指针"和"同步块索引"),这些成员必须初始化。 3)对象中的其他字节(为字段而设)总是设为零。 4)从托管堆上分配一个对象时,可能强制执行一次垃圾回收操作。 如果所有类型都是引用类型,应用程序的性能 阅读全文
posted @ 2014-01-23 15:37 烧点饭 阅读(538) 评论(2) 推荐(0) 编辑
摘要: 某些数据类在开发中非常常用,以至于许多编译器允许代码已简化的语法来操作它们。例如可以使用以下语法来分配一个整数: System.Int32 a = new System.Int32(); 当然,你肯定不愿意使用这种语法,C#允许使用如下所示的语法: int a = 0; 这种语法不仅增强代码的可读性,而且生成的IL代码和是有System.Int32时生成的IL代码是完全一致的。 编译器直接支持的数据类型称为基元类型(primitive type)。基元类型直接映射到Framework类库(FCL)中存在的类型。比如以下4行代码都是正确的,生成的IL代码也是相同的。int a = ... 阅读全文
posted @ 2014-01-23 13:33 烧点饭 阅读(834) 评论(0) 推荐(0) 编辑