标签:com 支持 相同 ati item 就是 hello 相对 jit
.net 从2.0开始支持泛型。泛型可以帮助我们创建独立于被包含类型的类和方法。
不必再为不同类型编写功能相同的方法或类了,只要创建一个泛型类或者方法就可以实现对多种数据类型的操作。
object类型虽然也能让你实现这样的功能,但它不是类型安全的。
泛型不仅是c#语言的一种结构,而且是CLR定义的。所以,在c#中定义的泛型类,也可以在vb中用一个特定的类型实例化该泛型。
object实现与泛型实现
static void Main(string[] args) { //System.Collections命名空间下面的ArrayList类,存储的是对象 //Add()方法,添加值类型数据时,需要将参数装箱,转为object类型,在访问数据时,需要将 //数据进行拆箱,要进行强制转换。 var list = new ArrayList(); list.Add(44); int i1 = (int)list[0]; foreach (int item in list) { Console.WriteLine(item); } //System.Collections.Generic命名空间下面的List<T>,是一个泛型类。 //类型定义为int,所以int类型在jit编译器动态生成的类中使用,编译之后生成新的类型。这个类型就是接受int参数的一个类型 //不再进行拆箱和装箱。 // var ilist = new List<int>(); ilist.Add(44); int i2 = ilist[0]; foreach (var item in ilist) { Console.WriteLine(item); } Console.ReadKey(); }
如果加入如下两行代码:
list.Add("hello");
ilist.Add("hello");
使用泛型时,编译不能通过;
而使用object时,编译可以通过,不过在访问数据时,装箱拆箱会报异常。
所以泛型相对于object,是类型安全的,性能也更优。
标签:com 支持 相同 ati item 就是 hello 相对 jit
原文地址:https://www.cnblogs.com/andonglu/p/11076500.html