黑马程序员技术交流社区
标题:
装箱和拆箱
[打印本页]
作者:
凌晨丶草未眠
时间:
2013-11-3 22:34
标题:
装箱和拆箱
什么是装箱和拆箱?
作者:
岁月渲染
时间:
2013-11-3 22:52
装箱:用于在垃圾回收堆中存储值类型。装箱时值类型到object类型或到此类型所实现的任何接口类型的饮食转换。
装箱:从object类型到值类型或从接口类型到实现接口的值类型的显示转换。
作者:
佟嘉豪
时间:
2013-11-3 23:24
用我的方法记很简单:
装箱:值类型到引用类型
拆箱:引用类型到值类型
注意:发生装箱拆箱要满足的条件!(发生装箱和拆箱的两种类型之间必须存在继承关系)
同时要注意,在程序中要避免发生装箱和拆箱操作
这里拿两个类来举例,就会很明白了 ArrayList 和List<T>
执行代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 装箱拆箱
{
class Program
{
static void Main(string[] args)
{
int n = 10;
object o = n;//装箱
int nn = (int)o;//拆箱
//string是引用类型
string s = "123";
int nnn = Convert.ToInt32(s);//没有发生拆箱
//两者的比较
ArrayList ar = new ArrayList();
List<int> li = new List<int>();
Stopwatch sw = new Stopwatch();
sw.Start();//监视开始
for (int i = 0; i < 10000000; i++)
{
ar.Add(i);//这里的Add方法的参数类型是object
}
sw.Stop();//监视停止
Console.WriteLine(sw.Elapsed);//获取执行之间的代码运行时间
sw.Start();
for (int i = 0; i < 10000000; i++)
{
li.Add(i);//这里的Add方法的参数类型是int
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
}
}
}
复制代码
作者:
佟嘉豪
时间:
2013-11-3 23:27
ArrayList的Add方法发生了装箱操作
List的Add方法没有发生
2者的运行时间相差很多
所以在存储相同类型的变量的集合中
ArrayList现在很少使用,都使用泛型集合了
作者:
hourglass
时间:
2013-11-4 01:55
装箱就是将值类型转换为引用类型
拆箱就是将引用类型转换为值类型
装箱可以隐式转换,因为值类型都继承自Object
强制拆箱的时候可能会抛出异常, 因为不是每个引用类型都能转换为值类型
作者:
zhangqiang
时间:
2013-11-6 14:03
装箱就是将值类型转换为引用类型
拆箱就是将引用类型转换为值类型
作者:
y494890511
时间:
2013-11-6 14:46
值类型存储在栈上,应用类型存储在对上。C#类是引用类型,结构式值类型。.net很容易吧值类型转换为引用类型,所以可以在需要对象的任意地方使用值类型。例如,int可以赋予一个对象。从值类型转换为引用类型称为装箱。如果方法需要把一个对象多为参数,同时传递一个值类型,装箱操作就会自动进行。另一方面,装箱的值类型可以使用拆箱操作转换为值类型。在拆箱时,需要使用类型强制转换运算符。
作者:
黑飞马
时间:
2013-11-6 21:26
装箱:就是将“值类型”转化为“引用类型”
拆箱:就是将“引用类型”转化为“值类型”
如 arraylist 中存的是object对象,如果一个值类型的值存到arraylist中,那么就会发生装箱的过程。
作者:
追溯客
时间:
2013-11-6 21:49
如问题得到解决,请及时把分类修改为"已解决",这样版主才能给你加分!黑马有你更精彩!
作者:
linuxcc
时间:
2013-11-6 22:24
通俗的讲 就是值类型与引用类型的相互转换!!
值类型---》引用类型 是装箱
引用类型----》值类型 是拆箱
如下对你的参考:http://blog.csdn.net/chenjinglong/article/details/14421947
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2