装箱和拆箱

装箱:就是将值类型转换为引用类型

拆箱:将引用类型转换位值类型

看两种类型是否发生了装箱和拆箱,要看,这两种类型是否存在继承关系

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

 

posted @ 2021-07-11 18:51  静态类  阅读(73)  评论(0编辑  收藏  举报