//装箱:值类型→引用类型
//拆箱:引用类型→值类型
//装箱拆箱转化,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();