1、C#泛型由CLR在运行时支持,编译为IL时使用占位符和特列的IL指令,JIT时再真正的泛型实例化,区别于C++的编译时模板机制和Java的搽试法。 a、可在各CLR语言之间无缝结合; b、不会像C++产生代码膨胀问题; c、也不会像Java的“假”泛型一样在性能上无所提升; d、对于值类型,每种值类型实例化一份,对于引用类型,只实例化为同一份代码。2、泛型类的要求 */ 3、泛型类可以成为其它类的成员 class C<T>} 4、泛型接口的要求同2点 } 5、泛型委托 delegate bool Predicate<T>(T value);class C} 6、泛型方法--在方法声明上包含类型参数 a、C#不支持泛型索引、属性、事件、构造、析构,但这些成员可以使用类的泛型参数; b、泛型方法可以用在泛和非泛类中 public class Finder); c、泛型方法重载要求 void F1<T>(T[] a,int i);void F1<U>(U[] a,int i); // Can'tvoid F2<T>(int i );void F2(int i ); //yesvoid F3 <T>(T t) where T:Avoid F3 <T>(T t) where T:B //Can't d、泛型方法的重写 } 7、泛型约束--C#泛型的类型安全特点--要求显式的约束 a、基类约束 } b、接口约束 } c、构造器约束 非法 d、值/引用类型约束 非法 相关文章: