装箱和拆箱

装箱:把值类型---->引用类型

拆箱:把引用类型---->值类型

(如果两类型存在继承关系,才存在装箱和拆箱;如果不存在继承关系,则不存在装箱和拆箱)

            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();
        }
    }

 

posted @ 2018-01-25 16:55  CosmosbipinnatusCav  阅读(136)  评论(0编辑  收藏  举报