您的位置:首页 > 其它

关于值类型和引用类型的区别和总结

2009-12-28 16:52 169 查看
关于值类型和引用类型的区别和总结

CLR中支持两种类型:值类型和引用类型。

它们之间有什么区别?

首先我们先类了解什么叫做值类型和引用类型。

值类型(用于存储值)包括:简单类型、结构类型(struct)、枚举类型(enum)

简单类型包括:整数类型、布尔类型、字符类型、实数类型(单精度、双精度、十进制型)

结构类型用来封装小型变量组,枚举

引用类型:变量存的不是值,而是指向所要存储的值的地址。引用类型的变量又称为对象:类、口、委托、数组。

其实两者最主要的区别是两者在内存中的分配位置不同。

值类型的实例分配在线程的堆栈上,它的变量直接包含变量的实例,使用的效率比较高

而引用类型的实例重视从托管堆上分配内存的,引用类型的变量通常包含一个指向实例的指针,变量通过该指针来引用实例。

由于两种在内存中分配位置的不同。引用类型的实例是分配在托管堆上,它的生命周期受到垃圾回收器的管理。而值类型直接分配在堆栈上,他的生命周期随堆栈的弹出而结束

值类型变量包含了其实例数据,每个变量保存了其本身的数据拷贝,因此在默认情况下参数的传递不会影响参数本身

引用类型保存的是其数据的引用地址,因此以引用方式进行参数的传递会影响到参数本身,因为两个变量会引用了内存中的同一个地址。

值类型有两种表示装箱与拆箱,引用类型只有一种能够形式装箱

值类型不具有多态性,而引用类型具有多态性

值类型变量进行赋值,其所有的成员的值都被复制,而引用类型变量进行赋值时只是简单复制指向一个引用对象。

唉,这些总结本应平时做的,到了快考试的时候才做,惭愧。。惭愧。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: