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