COVARIANCE协变
IEnumerable<string> strings = new List<string>{"a","b","c"};
IEnumerable<object> objects = strings;
~~ ~~
IEnumerable
IList<>既有输出也有输入,所以判定当前代码是危险的
还有一种情况,只能输入。Action
COVARIANCE,CONTEAVARIANCE,INVARIANCE
Covariance协变,当值作为返回值/out输出
Contracariance逆变,当值作为输入input
Invariance不变,当值即时输入又是输出
public interface IEnumerable<out T> out 协变
public delegate void Action<in T> in 逆变
public interface IList<T>
VARIANCE
VARIANCE转换
涉及到variane的转换就是variance转换
Variance转换就是引用转换的一个例子。引用转换就是指,你无法改变其底层的值,只能改变编译时类型。(比如IEnumerable