泛型约束

主要约束:主要约束可以是一个引用类型,标识了一个没有密封的类。指定一个引用类型约束时,相当于向编译器承诺:一个指定类型的实参要么是与约束类型相同的类型,要么是从约束类型派生的一个类型。如果一个类型参数没有指定主要约束,就默认认为System.Object。有两个特殊的主要约束:class和struct。其中class想编译器承诺一个指定的类型实参是引用类型

internal sealed class PrimaryConstraintOfStream<T> where T : Stream
{
 
}
internal sealed class PrimaryConstraintOfClass<T> where T : class
{
 
}

次要约束:次要约束代表的是一个接口类型。指定一个接口类型约束时,是向编译器承诺一个指定的类型实参是实现了接口的一个类型。由于能够指定多个接口约束,所以为类型实参指定的类型必须实现了所有接口约束

internal delegate void ShowBasicInformation<in T>(T vale) where T : IComparable, ICloneable;

构造器约束:一个类型参数可以指定零个或者一个构造器约束。指定构造器约束相当于向编译器承诺:一个指定类型实参是实现了公共无参构造器的一个非抽象类型

internal sealed class ConstructorConstraint<T> where T : new()
{
 
}
posted @ 2012-08-15 22:44  HelloWorld.Michael  阅读(356)  评论(0编辑  收藏  举报