9

2 つの質問があります。

質問 1 背景 : Microsoft の LINQ での 'AsEnumerable()' メソッドの実装を見ているときに気付きました。

public static IEnumerable<TSource> AsEnumerable<TSource>(this IEnumerable<TSource> source)
{ 
   return source;
} 

質問 1: ある種のキャストか何かを期待していましたが、渡された値を返すだけです。これはどのように作動しますか ?

質問 2/3 背景 : 共分散、反分散、不変を理解しようとしています。サブタイプを親タイプに割り当てるとき、「in」および「out」キーワードがポリモーフィックな動作を決定するという漠然とした理解があると思います。

質問 2: IEnumerable が共変であり、List が不変であることを読んで知っているのに、なぜこれが不可能なのか:

List<char> content = "testString".AsEnumerable();

質問 3:
IList が IEnumerable を実装している場合、なぜこれができないのですか :

IEnumerable<char> content1 = "testString";
IList<char> content2 = content1;

あらかじめご了承ください。

4

1 に答える 1