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>
...
私はここで何かが欠けていますか?