泛型约束
泛型约束: 为什么要使用泛型约束? 通过约束类型参数,可以增加约束类型及其继承层次结构中的所有类型所支持的允许操作和方法调用的数量。 设计泛型类或方法时,如果要对泛型成员执行除简单赋值之外的任何操作或调用System.Object不支持的任何方法,则必须对该类型参数应用约束。 例如,基类约束告诉编译器,仅此类型的对象或派生自此类型的对象可用作类型参数。 编译器有了此保证后,就能够允许在泛型类中调用该类型的方法。 泛型约束的类型: 类型参数必须是值类型。 类型参数必须是引用类型。 此约束还应用于任何类、接口、委托或数组类型。 类型参数必须具有公共无参数构造函数。 类型参数必须是指定的接口或实现指定的接口。 可指定多个接口约束。 约束接口也可以是泛型。 使用泛型约束的细节: 1)与其他约束一起使用时,new()约束必须最后指定。 2)class或struct约束必须再其他任何约束之前。 3)struct 约束包含new()约束,且new()约束不能与struct约束结合使用。 4)unmanaged 约束包含struct约束,unmanaged 约束不能与struct或new()约束结合使用 泛型约束的使用类型: 1)泛型约束可以是一个泛型类型参数对应一个约束,或多个约束