您的位置:首页 > 编程语言 > C#

.net装箱和拆箱

2014-08-14 09:47 211 查看
//装箱:值类型→引用类型

            //拆箱:引用类型→值类型

            //装箱拆箱转化,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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 c# .net arraylist
相关文章推荐