Welcome

首页 / 软件开发 / .NET编程技术 / 泛型相关知识

泛型相关知识2011-09-03 博客园 姜敏自从上次参加完俱乐部的聚会后,觉的有必要总结下泛型的用法,虽然脑袋讲的 非常仔细,没有必要再写,但做为学习者,我喜欢把自己的所学以文章的形式展示出 来,这样也有我的一部分。我们可以用一个简单的例子来做实验:实例化一个 ArrayList和一个List<int>,然后往其中加入成员,最后分别读取出第一个 成员,进行一个加法操作。

  ArrayList _list = new ArrayList();            _list.Add(1);            _list.Add("a");                     int i = (int)_list[0]  + 1;            List<int> _list2 = new List<int>();            _list2.Add(1);//正确                     int j = (int)_list2[0] + 1;
ArrayList的缺点:

1:处理值类型时,出现装箱、折箱操作,影响性能。_list.Add(1)时会发生装 箱。

2:处理引用类型时,虽没有装箱和折箱操作,但仍需要类型转换操作。代码 _list.Add("a")不会发生装箱。

3:程序运行时的类型转换可能引发异常。运行_list[1]时,由于它是一个字符 串,要强制转换成int就会有异常。

泛型处理过程:泛型用一个通用的数据类型T来代替object,在类实例化时指 定T的类型,CLR自动编译为本地代码,并且保证数据类型安全。

泛型优点:

1:类型安全的。例如实例化了int类型的类,就不能处理string类型的数据。 上面的_list2.Add("a"),就会报错。

2:处理值类型时,无需装箱和折箱。int j=i+1;i可以直接取,并不需要折箱操 作。

3:无需类型转换,包含值类型和引用类型。