3

共変および反変のジェネリック型を定義するときに、inまたはoutを使用する必要があるかどうかをよく忘れます。Java では、ニーモニックの PECS (プロデューサーがコンシューマー スーパーを拡張する) が役に立ちます。c# の同様のニーモニックを知っていますか?

4

3 に答える 3

3

彼らが共変と反変ではなく「イン」と「アウト」と呼んだとき、彼らは私たちのためにこれをしませんでしたか? 考えてみてください: 値を「押し込む」か、それとも「取り出す」か? 確信が持てない場合は、'out' を試してください。これははるかに一般的な (そして理解しやすい) 方法です。

于 2010-08-27T16:29:39.247 に答える
1

in型は関数に渡さinれます。out型は関数から返さoutれます。

于 2010-08-27T17:28:25.090 に答える
0

覚えていないときは、常に参照しますIEnumerable<out T>(つまり、もちろん、そのインターフェイスのシグネチャを覚えておく必要があります...)。T のインスタンスのみを an から取得できるIEnumerable<out T>ため、共変です。T "in" のインスタンスのみをインターフェイス (またはより一般的なデリゲート) に渡すことができる場合、それは反変です。

于 2010-08-27T17:04:47.237 に答える