c# 泛型学习(一)

.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,是类型安全的,性能也更优。

猜你喜欢

转载自www.cnblogs.com/andonglu/p/11076500.html