.net装箱和拆箱
2014-08-14 09:47
211 查看
//装箱:值类型→引用类型
//拆箱:引用类型→值类型
//装箱拆箱转化,n在意义上本身就是属于object类型的,只是在o对应的对内存中复制了一个n存进去,这种转化叫装箱
int n = 10;
object o = n;
int m = (int)o;
//不属于装箱拆箱的转化,tring与int在内存存在形式上是不同的,这种虽然也是把值类型转化为引用类型,但是,这种方式是先在堆内存上开辟一个空间,然后存储一个string型的”10”,然后再把地址给str,这种不叫装箱
int i = 20;
string str = Convert.ToString(i);
int y = int.Parse(str);
//3、装箱和拆箱:必须是在内存方面存在的形式相同的转化才叫拆装箱,也就是子父类之间的转换,装的时候是什么类型装的箱,拆的时候也必须是同样的类型接受,否则会错
//int q = 30;
//object oo = q;
//double d = (double)oo;
//int实现了IComParable接口,所以也是装箱拆箱
int x = 100;
IComparable ic = x;
int w = (int)ic;
char ch = 's';
string ch2 = "w";
int n1 = 10;
double d2 = 19;
string r = string.Concat(ch, ch2, n1, d2);
Console.WriteLine(r);
#region 频繁发生拆箱和装箱和消耗时间、资源
ArrayList arr = new ArrayList();
Stopwatch sw = new Stopwatch();
sw.Start();////00:00:01.7436891时间
for (int ii = 0; ii < 10000000; ii++)
{
arr.Add(ii);
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
sw.Restart();
sw.Start();
//时间00:00:00.4028327
List<int> list = new List<int>();
for (int ii = 0; ii < 10000000; ii++)
{
list.Add(ii);
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
#endregion
Console.ReadKey();
//拆箱:引用类型→值类型
//装箱拆箱转化,n在意义上本身就是属于object类型的,只是在o对应的对内存中复制了一个n存进去,这种转化叫装箱
int n = 10;
object o = n;
int m = (int)o;
//不属于装箱拆箱的转化,tring与int在内存存在形式上是不同的,这种虽然也是把值类型转化为引用类型,但是,这种方式是先在堆内存上开辟一个空间,然后存储一个string型的”10”,然后再把地址给str,这种不叫装箱
int i = 20;
string str = Convert.ToString(i);
int y = int.Parse(str);
//3、装箱和拆箱:必须是在内存方面存在的形式相同的转化才叫拆装箱,也就是子父类之间的转换,装的时候是什么类型装的箱,拆的时候也必须是同样的类型接受,否则会错
//int q = 30;
//object oo = q;
//double d = (double)oo;
//int实现了IComParable接口,所以也是装箱拆箱
int x = 100;
IComparable ic = x;
int w = (int)ic;
char ch = 's';
string ch2 = "w";
int n1 = 10;
double d2 = 19;
string r = string.Concat(ch, ch2, n1, d2);
Console.WriteLine(r);
#region 频繁发生拆箱和装箱和消耗时间、资源
ArrayList arr = new ArrayList();
Stopwatch sw = new Stopwatch();
sw.Start();////00:00:01.7436891时间
for (int ii = 0; ii < 10000000; ii++)
{
arr.Add(ii);
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
sw.Restart();
sw.Start();
//时间00:00:00.4028327
List<int> list = new List<int>();
for (int ii = 0; ii < 10000000; ii++)
{
list.Add(ii);
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
#endregion
Console.ReadKey();
相关文章推荐
- .NET中装箱拆箱与JAVA的异同 .
- 6个重要的.NET概念栈,堆,值类型,引用类型,装箱,拆箱
- .NET 中的装箱与拆箱实现过程
- .Net常见面试题整理(二)——装箱和拆箱
- .NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱
- [转]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- [转]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- 6个重要的.NET概念: - 堆栈,堆,值类型,引用类型,装箱和拆箱
- .NET(C#):理解值类型/引用类型,装箱/拆箱,Object类
- .NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱
- .NET中六个你必须知道的重要概念之装箱(boxing)和拆箱(unboxing)
- .net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- 第二十三节: EF性能篇(三)之基于开源组件 Z.EntityFrameWork.Plus.EF6解决EF性能问题 第四节:一些指令总结 定时调度系列之Quartz.Net详解 第十七节:易混淆的概念(静态和非静态、拆箱和装箱) 那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)
- .NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱
- .net 装箱与拆箱
- .Net中的装箱和拆箱
- .NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱
- 【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱
- .Net 基础概念 堆与栈、值类型与引用类型、装箱与拆箱性能影响