1、Covariance 协变,当值作为返回值/out 输出
public interface IEnumerable
查看泛型接口中的泛型参数前的out、in以及既是输入也是输出关键字
IEnumerable可以转换为IEnumerable
子类 to 父类(隐式转换)
父类 to 子类(显示转换)
2、Contravariance逆变,当值作为输入input
public delegate void Action
Action可以转换为Action
3、Invariance不变,当值既是输入又是输出
public interface IList
IList与其IList/int等不能相互转换
Variance转换是引用转换的一个例子
Node:必须是引用转换
还要注意是隐式转换还是显示转换