本文主要是介绍c#中的拆箱与装箱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
UML建模语言学习的结束,也预示的一个新的里程碑的开始————C#,在学习C#语言的过程中,讲到一个抽象的概念——拆箱和装箱。有点不太懂,就去网上搜索了下。
装箱:装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。
拆箱:从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。
简单来说,拆箱是将引用类型转换为值类型 ;装箱是将值类型转换为引用类型 。
通过拆箱和装箱的转换,将值类型与引用类型链接起来。
视频中的讲师也通过小例子给我演示了一下拆箱和装箱的概念。
int val = 100;
object obj = val;
Console.WriteLine (“对象的值 ={0}", obj);
这是一个装箱的过程,是将值类型转换为引用类型的过程
int val = 100;
object obj = val;
int num = (int) obj;
Console.WriteLine ("num: {0}",num);
这是一个拆箱的过程,是将值类型转换为引用类型,再由引用类型转换为值类型的过程
注:被装过箱的对象才能被拆箱
在.NET中,数据类型划分为值类型和引用(不等同于C++的指针)类型,与此对应,内存分配被分成了两种方式,一为栈,二为堆,注意:是托管堆。
值类型只会在栈中分配
引用类型分配内存与托管堆。 托管堆对应于垃圾回收。
值类型只会在栈中分配。
引用类型分配内存与托管堆。 托管堆对应于垃圾回收。
以上是我对拆装箱的理解。
想要进一步了解可以到http://www.cnblogs.com/huashanlin/archive/2007/05/16/749359.html
这篇关于c#中的拆箱与装箱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!