装箱和拆箱
装箱:把值类型---->引用类型
拆箱:把引用类型---->值类型
(如果两类型存在继承关系,才存在装箱和拆箱;如果不存在继承关系,则不存在装箱和拆箱)
int n = 10; object o = n;//装箱 int n2 = (int)o;//拆箱
代码中应该尽量避免装箱和拆箱。
使用装箱所用时间:00:00:01.3066033
static void Main(string[] args) { int n = 10; object o = n;//装箱 int n2 = (int)o;//拆箱 ArrayList list = new ArrayList(); Stopwatch sp = new Stopwatch(); sp.Start(); //00:00:01.3066033 arraylist所用时间 for (int i = 0; i < 10000000; i++) { list.Add(i); } sp.Stop(); Console.WriteLine(sp.Elapsed); Console.ReadKey(); }
不需要装箱所用时间:00:00:00.1262203
static void Main(string[] args) { int n = 10; object o = n;//装箱 int n2 = (int)o;//拆箱 List<int> list = new List<int>(); //ArrayList list = new ArrayList(); Stopwatch sp = new Stopwatch(); sp.Start(); //00:00:01.3066033 不使用泛型所用时间 //00:00:00.1262203 使用泛型所用时间 for (int i = 0; i < 10000000; i++) { list.Add(i); } sp.Stop(); Console.WriteLine(sp.Elapsed); Console.ReadKey(); } }