值类型和引用类型的区别
2011-05-12 20:08
197 查看
存储的区别:
值类型的实例经常会存储在栈上的。但是也有特殊情况。如果某个类的实例有个值类型的字段,那么实际上该字段会和类实例保存在同一个地方,即堆中。
不过引用类型的对象总是存储在堆中。如果一个结构的字段是引用类型,那么只有引用本身是和结构实例存储在一起的(在栈或堆上,视情况而定)。
函数参数传递时的区别:
值类型是把自己的值复制一份传递给别的函数操作.无论复制的值怎么被改变.其自身的值是不会改变的
而引用类型是把自己的内存地址传递给别的函数操作.操作的就是引用类型值的本身.所以值被函数改变了.
一般引用类型可以派生出新的类型,而值类型不能;引用类型可以包含null值,值类型不能(string 除外:string 由于其是恒定的字符串以及它的驻留机制,使得它既是基元类型又是引用类型,在编译以及运行时,.Net都对它做了一些优化工作);
值类型的实例经常会存储在栈上的。但是也有特殊情况。如果某个类的实例有个值类型的字段,那么实际上该字段会和类实例保存在同一个地方,即堆中。
不过引用类型的对象总是存储在堆中。如果一个结构的字段是引用类型,那么只有引用本身是和结构实例存储在一起的(在栈或堆上,视情况而定)。
函数参数传递时的区别:
值类型是把自己的值复制一份传递给别的函数操作.无论复制的值怎么被改变.其自身的值是不会改变的
而引用类型是把自己的内存地址传递给别的函数操作.操作的就是引用类型值的本身.所以值被函数改变了.
一般引用类型可以派生出新的类型,而值类型不能;引用类型可以包含null值,值类型不能(string 除外:string 由于其是恒定的字符串以及它的驻留机制,使得它既是基元类型又是引用类型,在编译以及运行时,.Net都对它做了一些优化工作);
相关文章推荐
- 值类型和引用类型的区别(详细分析)
- 读<<CLR via C#>>总结(3) 值类型和引用类型的区别
- 20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)
- 值类型和引用类型的最基本的区别是什么?
- 值类型和引用类型区别
- 值类型与引用类型比较与区别
- ref和out的区别,值类型和引用类型的使用
- 值类型和引用类型的区别
- 值类型与引用类型的区别
- 值类型和引用类型的区别
- 值类型和引用类型的区别案例
- 值类型和引用类型的区别以及都包含哪些
- 值类型和引用类型的区别
- Emit学习-答疑篇-值类型和引用类型在使用时的区别
- 值类型和引用类型区别
- 值类型与引用类型的区别
- 值类型引用类型的区别(转)
- 值类型和引用类型的区别
- 值类型与引用类型的区别
- 值类型和引用类型的区别