• C#高级编程读书笔记之泛型的优点


    泛型是.NET2.0新提供的特性。
    一、泛型的一个主要优点就是性能。
    在出现泛型之前,如果对值类型使用集合类,就必须把值类型装箱成引用类型,然后加入到集中中,在使用集合时,又需要把引用类型拆箱成值类型。如下面的示例显示了System.Collections命名空间中的ArrayList类,ArrayList存储对象,Add()方法定义为需要把一个对象作为参数,所以要装箱一个整数类型,读取时又要进行拆箱。
    ArrayList list = new ArrayList();
    list.Add(
    10);
    int i1 = (int)list[0];
    foreach(int i2 in list)
    {
    Console.WriteLine(i2);
    }
    装箱和拆箱的实现都不复杂,但性能损失较大,如果迭代的项数多时对性能的损失更为明显。
    为了避免这种性能的损失,到了.NET2.0后,就可以使用泛型。
    System.Collections.Generic命名空间中List<T>类不使用对象,而是在使用时定义类型。下面示例,List<T>类的泛型类型定义为int,所以int类型在JIT编译器动态生成的类中使用,不再进行装箱和拆箱的操作,从而就避免了这方面的性能损失。
    List<int> list = new List<int>();
    list.Add(
    10);
    int i1= list[0];
    foreach(int i2 in list)
    {
    Console.WriteLine(i2);
    }
    二、泛型的另外一个特点就是类型安全
    在普通集合中,可以在这个集合中添加任何类型,如在ArrayList类型的集合中,可以添加整数,字符串等类型的对象,如果这个时候用foreach去迭代集合中的元素,就会产生异常。
    错误应该尽早发现。在泛型类List<T>中,泛型类型T定义了运行使用的类型,即除了T这种类型,其它类型无法添加到泛型的集合中去。
    三、二进制代码的重用
    泛型允许更好地重用二进制代码,泛型类可以定义一次,用许多不用类型实例化。如定义List<T>泛型类,则可以用int,字符串等类型实例化。
    List<T> intList = new List<T>();
    intList.Add(
    10);

    List
    <string> stringList = new List<string>();
    stringList.Add(
    "aryang");
  • 相关阅读:
    Java面试——从JVM角度比较equals和==的区别
    Java线程和多线程(三)——线程安全和同步
    玩转Android之MVVM开发模式实战,炫酷的DataBinding!
    写点什么好呢2? 钱、事业、婚姻、人生意义
    写点什么好呢2? 钱、事业、婚姻、人生意义
    大型网站架构技术一览
    【树莓派】GSM900模块
    【Latex】数学公式排版
    【MYSQL】导入中文后乱码问题
    【R】shiny界面
  • 原文地址:https://www.cnblogs.com/zoupeiyang/p/1533753.html
Copyright © 2020-2023  润新知