标签:blog http 使用 问题 div re
----------------------
ASP.Net+Unity3D游戏开发、
.Net培训、期待与您交流! ----------------------
在C#中,值类型有:int double decimal bool enum struct .
应用类型有:string 数组 用户自定义类,等其他的都是引用类型
两者的区别:
1:在存储区上的区别: 值类型是存储在栈上面的,引用类型是存储在堆上面的。
2:在赋值上,值类型是直接赋新值给变量,但是引用类型是开辟一块新的空间来存放新值,
并将之前指向旧的值的那个地址改成指向新的值的地址。这就完成了一次赋值的操作。
在对应用类型进行赋值的时候: 首先,我们先从定义和赋初始值开始说起, 引用类型在被申明的时候,首先在堆中开辟一块内存空间,然后
将其在堆中的地址赋值给 栈 中的一快空间,这块空间就是来放一个引用类型在堆中的地址的。然后我 对其进行重新赋值的时候,并不是将堆
中的值给改变了,而是在堆中重新开辟了一块新的空间,然后将堆中的这个地址赋值给 之前这个变量在栈中开辟的那块存堆中的地址的那个地址,
所以之前的那个最先开辟在堆中的空间是不会被消除的,除非.Net FrameWork这个框架中的垃圾回收站自动帮我们完成释放内存的功能,但这是
在程序运行结束后才会做,所以我们如果对引用类型的变量 的话,我们应该尽量减少对其的重新赋值,就想string这个引用类型一样,我们如果
需要对字符串进行重复的赋值和处理,我们一般不会用string这个字符串来处理, 我们一般使用stringBuild 来处理字符串重新赋值的问题。
这篇文章的字数可能很少,但是全部写的是我自己对 值类型和引用类型的理解。当然,这些也是传智的老师教的,但是是我用自己的语言写出来的。
值类型和引用类型,布布扣,bubuko.com
值类型和引用类型
标签:blog http 使用 问题 div re
原文地址:http://www.cnblogs.com/YZDK/p/3836856.html