我想知道,为什么IEnumerable<T>
只有out
和没有 in
逆变标志?
public interface IEnumerable<out T>
我可以out
通过这个例子理解:
IEnumerable<string> strings = new List<string>(){"a","b","c"};
IEnumerable<object> objects = strings;
object
大于string
,所以编译器害怕做类似的事情:
objects = objects.First().Select(x=>5);// ( we cant insert int to string...)
很好理解。
但是如果我想使用 IEnumerable 作为插入呢?
就像是 :
IEnumerable<object> objects = ...;
IEnumerable<string> strings = objects
所以我也可以插入到对象中......
但问题是没有IEnumerable<in T>
...
我在这里错过了什么吗?