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

C#2.0 泛型初探 (特性一览)
void F2<T>(int i );
C#2.0 泛型初探 (特性一览)
void F2(int i ); //yes
C#2.0 泛型初探 (特性一览)

C#2.0 泛型初探 (特性一览)
void F3 <T>(T t) where T:A
C#2.0 泛型初探 (特性一览)
void F3 <T>(T t) where T:B //Can't
  d、泛型方法的重写
}
7、泛型约束--C#泛型的类型安全特点--要求显式的约束
  a、基类约束
}

  b、接口约束
}

  c、构造器约束
非法

  d、值/引用类型约束
非法

相关文章: