装箱和拆箱
装箱:就是将值类型转换为引用类型
拆箱:将引用类型转换位值类型
看两种类型是否发生了装箱和拆箱,要看,这两种类型是否存在继承关系
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;//拆箱 //ArrayList list = new ArrayList(); //00:00:01.1431696 List<int> list = new List<int>();//循环了1000万次,装箱操作和没进行装箱操作,时间相差10倍以上,所以我们程序中要避免出现装箱拆箱的操作 //就是值类型转换成引用类型,引用类型转换成值类型 //00:00:00.0722519 //计时 Stopwatch sw = new Stopwatch(); sw.Start(); //这个循环就是完成了1000万次的装箱操作 for (int i = 0; i < 10000000; i++) { list.Add(i); } sw.Stop(); Console.WriteLine(sw.Elapsed);//elapsed的意思是时间经过,指的是时间;经过;表示一段时间,elapse的过去式 //这地方没有发生任意类型的装箱和拆箱,没有继承关系 string str = "123"; int num = Convert.ToInt32(str); int n2 = 10; IComparable i2 = n; //这里存在装箱,因为int继承于IComparable类型,其中comparable的意思是类似的,可比较的,同等的 Console.ReadKey(); } } }