值类型和引用类型

黑马程序员--鄢振东

 
在C#中,值类型有:int double decimal bool enum struct .
    应用类型有:string  数组  用户自定义类,等其他的都是引用类型
 
两者的区别:
1:在存储区上的区别: 值类型是存储在栈上面的,引用类型是存储在堆上面的。
 
2:在赋值上,值类型是直接赋新值给变量,但是引用类型是开辟一块新的空间来存放新值,
并将之前指向旧的值的那个地址改成指向新的值的地址。这就完成了一次赋值的操作。
 
在对应用类型进行赋值的时候:  首先,我们先从定义和赋初始值开始说起, 引用类型在被申明的时候,首先在堆中开辟一块内存空间,然后
将其在堆中的地址赋值给 栈 中的一快空间,这块空间就是来放一个引用类型在堆中的地址的。然后我 对其进行重新赋值的时候,并不是将堆
中的值给改变了,而是在堆中重新开辟了一块新的空间,然后将堆中的这个地址赋值给  之前这个变量在栈中开辟的那块存堆中的地址的那个地址,
所以之前的那个最先开辟在堆中的空间是不会被消除的,除非.Net FrameWork这个框架中的垃圾回收站自动帮我们完成释放内存的功能,但这是
在程序运行结束后才会做,所以我们如果对引用类型的变量  的话,我们应该尽量减少对其的重新赋值,就想string这个引用类型一样,我们如果
需要对字符串进行重复的赋值和处理,我们一般不会用string这个字符串来处理,   我们一般使用stringBuild 来处理字符串重新赋值的问题。
 
 
这篇文章的字数可能很少,但是全部写的是我自己对  值类型和引用类型的理解。当然,这些也是传智的老师教的,但是是我用自己的语言写出来的。
posted @ 2014-07-11 00:23  经历  阅读(231)  评论(0编辑  收藏  举报