2016-07-21 7 views
0

earlier question about generic varianceには、IEnumerable<T>のメンバーを変更できるとの通知がありました。共変型を変更することができる場合、どのようにして分散違反が発生するのか、IEnumerable<T>はどのようにしてTで共変することができますか?IEnumerable <T>のメンバーを変更するには、どうすればよいですか?

+0

内部タイプBaseのオブジェクトを持つことができることができれば、あなたが言及

このような違反は唯一の私は、あなたが「メンバー」とで何を意味するかについて、いくつかの混乱があると思い起こる可能性があり、「修正は。」あなたは例を挙げることができますか? –

+0

@ScottHannen元の質問のコメントの短い部分を切り捨てて、明確な意味ではなく、新しい質問をするのは適切なサイトのエチケットだと思って、普遍的で些細な解釈があることを期待しました。つまり、元のコメント作成者が何を参照しているのかわからないため、これを部分的に尋ねました。 – concat

+0

ああ、実際には、「リスト」のように、 'T内で共変しないで、あるサブクラス_を強く暗示している' IEnumerable ' 。元の質問にはそれほど意味がありますが、私はまだそれが正しいことを完全には確信していません。 – concat

答えて

5

シーケンスの変更を要素の変更と区別する必要があります。

プロパティや関数を使用してオブジェクトの型を変更することはできないため、要素は問題なく変更できます。

IEnumerable<T>のすべての要素がTまたはTに由来するタイプなので、これはすべて問題ありません。あなたは、例えば、IEnumerable<Derived>

+0

これは*完全に正しいですが、質問にリンクされているコメントを読んで、私はこれが尋ねられていることを確信していません。 –

関連する問題