clr via c# 泛型
1,类型对象,对于应用程序的各种类型创建的对象叫做类型对象:Type object;对于泛型类型参数的类型,CLR同样也会创建内部类型对象,适用于 引用类型 值类型 接口类型 委托类型 具有泛型类型参数的类型称为:开放类型。 指定了泛型实参的类型称为:封闭类型。比如 Dictionary<TKey,TVale>称为开放类型,Dictionary<string,int>称为封闭类型 2,委托和接口泛型的逆变和协变。 Func<object, ArgumentException> fn1 = (x) => { Console.WriteLine(x); return null; }; Func<string, Exception> fn2 = fn1; Exception e = fn2("x"); Console.ReadKey(); 当一个委托或者一个接口类型,其泛型参数前面带in时,则允许接受该参数为其派生类的委托的实列。 当一个委托或者一个接口类型,其泛型参数前面带out时,则允许接受该参数为其基类的委托的实列。比如上面。 string 是 object 的派生类,Exception 是 ArgumentException 的基类。所以可以赋值。 3,泛型的约束 public static T Min<T>(T o1,T o2 ) where T : IComparable<T