知识点 泛型

1. 基本概念
所谓泛型,就是创建使用通用(而不是特定)类型的类或方法。
泛型主要的改进方面:

  • 代码复用。泛型类可以用户任何类型
  • 性能:减少了装箱拆箱过程中的性能损耗
  • 类型安全:如传统的ArrayList可以把任意对象作为参数放在其Add方法中。编译器不考虑这些,所以集合中提取对象时,除非强制类型转换失败,否则我们不知道出了问题。而泛型有内置的类型安全,如果进出泛型集合类时违反了类型检查过则,编译器就会报告错误。
  • 易于阅读

所有泛型集合都在System.Collection.Generic中。

 2. 泛型约束

  • 什么是泛型约束?
    简而言之,泛型约束主要是对泛型所接受的参数的一些特性进行限制。
  • 为什么要泛型约束?
    更好地控制类型安全
  • 怎么实现泛型约束?(通过5种不同的泛型约束)
    ○ 值类型约束:要求泛型参数必须是值类型,例如int,short以及自定义的stuct等
         public class MyClass2<T>
            where T : struct//这个泛型类只接受值类型的泛型参数
        { 
        }
    ○ 引用类型约束:要求泛型参数必须是引用类型,例如string,object,以及自定义的class
        public class MyClass<T>
            where T:class//这个泛型类只接受引用类型的泛型参数
        { 
        }
    ○   构造函数约束:要求泛型参数必须有构造函数
       public class MyClass3<T>
            where T : new()
        { 
        }
    ○   接口约束:要求泛型参数必须实现某个接口
          public class MyClass4<T>
            where T : System.IComparable
        { 
        }
    ○   基类约束:要求泛型参数必须继承某个基类
       public class MyClass5<T>
            where T : Customer
        { 
        }

 

 

引自:
http://www.cnblogs.com/stevenxiao/archive/2008/02/21/1076616.html
http://www.cnblogs.com/chenxizhang/archive/2008/09/18/1293680.html

原文地址:https://www.cnblogs.com/raysbo/p/2834796.html