2013年10月24日

摘要: 解析:CLR支持两种类型:值类型和引用类型。用Jeffrey Richter(《CLR via C#》作者)的话来说,“不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和诸多性能问题”。这就要求我们正确理解和使用值类型和引用类型。值类型包括C#的基本类型(用关键字int、char、float等来声明),结构(用struct关键字声明的类型),枚举(用enum关键字声明的类型);而引用类型包括类(用class关键字声明的类型)和委托(用delegate关键字声明的特殊类)。C#中的每一种类型要么是值类型,要么是引用类型。所以每个对象要么是值类型的实例,要么是引用类型的实例。值类型的实例 阅读全文
posted @ 2013-10-24 17:13 liuhlwin 阅读(184) 评论(0) 推荐(0)
 
摘要: 问:.NET中值类型和引用类型的区别是什么?答:值类型分配在栈上,引用类型分配在堆上。这样的问答我见过无数无数,很惭愧,我也曾经说过这样的话,实在抱歉,特此更正。我不是学院派的,但是既然要写点东西出来,查点资料还是必须的,所以我又翻开了宝典——“当当当当!”——《CLR Via C#》,书中是这么描述的:引用类型总是从托管堆上分配的,叽里呱啦叽里呱啦……使用引用类型时,必须注意到可能存在的一些性能问题,叽里呱啦叽里呱啦……为了提升简单的常用类型的性能,CLR提供了名为“值类型”的轻量级类型。值类型的实例通常是在一个线程的堆栈上分配的,叽里呱啦叽里呱啦……注意到了吗,谁也没说值类型就一定在栈上分 阅读全文
posted @ 2013-10-24 17:11 liuhlwin 阅读(393) 评论(0) 推荐(0)