值类型和引用类型的区别

存储的区别:

         值类型的实例经常会存储在栈上的。但是也有特殊情况。如果某个类的实例有个值类型的字段,那么实际上该字段会和类实例保存在同一个地方,即堆中。
   不过引用类型的对象总是存储在堆中。如果一个结构的字段是引用类型,那么只有引用本身是和结构实例存储在一起的(在栈或堆上,视情况而定)。

函数参数传递时的区别:

         值类型是把自己的值复制一份传递给别的函数操作.无论复制的值怎么被改变.其自身的值是不会改变的
    而引用类型是把自己的内存地址传递给别的函数操作.操作的就是引用类型值的本身.所以值被函数改变了.
   
      一般引用类型可以派生出新的类型,而值类型不能;引用类型可以包含null值,值类型不能(string 除外:string 由于其是恒定的字符串以及它的驻留机制,使得它既是基元类型又是引用类型,在编译以及运行时,.Net都对它做了一些优化工作);

posted @ 2011-05-12 20:08  jingjunfeng  阅读(148)  评论(0编辑  收藏  举报