详解C#装箱与拆箱
来源:互联网 发布:马云怎么靠淘宝挣钱 编辑:程序博客网 时间:2024/06/12 22:15
装箱(box)就是将值类型转换为引用类型的过程。而相反的过程就叫拆箱(unbox)。
一、装箱操作
例如:
int val = 100;
object obj = val;
Console.WriteLine (“对象的值 = {0}", obj);
这是一个装箱的过程,是将值类型转换为引用类型的过程。
值类型被装箱时发生了什么?
(1)在堆上分配内存。因为值类型最终有一个对象代表,所有堆上分配的内存量必须是值类型的大小加上容纳此对象及其内部结构(比如虚拟方法表)所需的内存量。
(2)值类型的值被复制到新近分配的内存中
(3)新近分配的对象地址被放到堆栈上,现在它指向一个引用类型。
二、拆箱操作
在刚才程序的基础上,再加一句话变成:
int val = 100;
object obj = val;
int num = (int) obj;
Console.WriteLine ("num: {0}", num);
这是一个拆箱的过程,是将值类型转换为引用类型,再由引用类型转换为值类型的过程。
注:被装过箱的对象才能被拆箱。
在装箱的时候,并不需要显示类型转换。但在拆箱时需要类型转换。这是因为在拆箱时对象可以被转换为任何类型。
注意:装箱操作可以隐式进行,但拆箱操作必须显示。
首先,检查这个对象实例,看它是否为给定值类型的装箱值。
然后,把这个实例的值拷贝给值类型的变量。
- 详解C#装箱与拆箱
- 详解C#装箱与拆箱
- 详解C#装箱与拆箱
- C#装箱与拆箱
- C#装箱与拆箱
- c# 装箱与拆箱
- C#装箱与拆箱
- C#装箱与拆箱
- C#装箱与拆箱
- C#拆箱与装箱
- C# 装箱与拆箱
- C#装箱与拆箱
- C#装箱与拆箱
- C#拆箱与装箱
- C# 装箱与拆箱
- C# 装箱与拆箱
- C#装箱与拆箱
- C#的装箱拆箱操作详解
- 介绍一个不错的服务器综合监控工具脚本集aspersa
- 收藏一个验证MS SQL SEVRER备份有效性的脚本
- php中检查某个链接是否存在的两个方法
- c++中虚函数和纯虚函数定义
- PHP魔术方法小结1
- 详解C#装箱与拆箱
- Android中调用webservice小结
- Android 移动开发TIPS小结4
- linux------------------00字符串操作------宏----------
- as3的BitArray
- (转)linux硬盘检测
- BoneCP数据连接池的例子配置
- 'SOAP Response cannot be decoded.Raw Response. faultDetail:null
- spring mvc3 REST中的一个注意点