- 协变:
out
- 修饰作用:只能作为返回值
- 逆变:
in
- 修饰作用:只能作为入参
- 用来在泛型中,修饰泛型字母的
- 只有【泛型接口】和【泛型委托】可用
// 两个普普通通的委托
delegate T TestOut<out T>();
delegate void TestIn<in T>(T t);
// 两个普普通通的父子
class Father { }
class Son : Father { }
// 某方法内↓↓↓
TestOut<Son> tos = () => new Son();
TestOut<Father> tof = tos;
Father f = tof(); // 父类装子类
//
TestIn<Father> tif = father => { };
TestIn<Son> tio = tif;
tio(new Son()); // 父类装子类