用我的方法记很简单:
装箱:值类型到引用类型
拆箱:引用类型到值类型
注意:发生装箱拆箱要满足的条件!(发生装箱和拆箱的两种类型之间必须存在继承关系)
同时要注意,在程序中要避免发生装箱和拆箱操作
这里拿两个类来举例,就会很明白了 ArrayList 和List<T>
执行代码如下:- 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;//拆箱
- //string是引用类型
- string s = "123";
- int nnn = Convert.ToInt32(s);//没有发生拆箱
- //两者的比较
- ArrayList ar = new ArrayList();
- List<int> li = new List<int>();
- Stopwatch sw = new Stopwatch();
- sw.Start();//监视开始
- for (int i = 0; i < 10000000; i++)
- {
- ar.Add(i);//这里的Add方法的参数类型是object
- }
- sw.Stop();//监视停止
- Console.WriteLine(sw.Elapsed);//获取执行之间的代码运行时间
- sw.Start();
- for (int i = 0; i < 10000000; i++)
- {
- li.Add(i);//这里的Add方法的参数类型是int
- }
- sw.Stop();
- Console.WriteLine(sw.Elapsed);
-
- }
- }
- }
复制代码 |