4
 public interface IOInitializable<in ItemType>

反変とは:狭い(円)から広い(形状)への変換

インターフェイスの意味ですか?

結果と危険性は何ですか?

http://msdn.microsoft.com/en-us/library/dd469484.aspxを読みましたが、これは役に立ちません。

4

2 に答える 2

3

IComparerは、これを実証する良い例です。IComparerは次のようになります。

IComparer<in T>

次のようにします。

IComparer<Primate>
IComparer<Chimpanzee>

ここでChimpanzee : Primate(もちろん)。を必要とする方法は、2つのタイプに共通の特性を使用して比較に影響を与えるため、比較者が霊長類を比較できる場合はチンパンジーも比較できるため、引数としてIComparer<Chimpanzee>をとることができます。IComparer<Primate>

これを考える良い方法は、機能の観点からです。共分散により、コア機能(オブジェクトの文字列の受け渡しなど)を実装するより複雑なオブジェクトを渡すことができます。共変性は似たようなことをします...すべての霊長類を比較することは、チンパンジーを比較することよりも複雑です。これにより、特定のタイプの比較子を、より一般的なタイプを比較する比較子に置き換えることができます。この意味で、「in」は、渡される実際のタイプよりもメソッドの機能に多く適用されます。

于 2012-11-16T10:11:15.613 に答える
3

Tomas の次の説明を読むことをお勧めします。

C# 4 における共分散と反分散の背後にある理論

要するに、多数の「円」を渡すメソッド呼び出しがある場合、「形状」を返さない限り、多数の「形状」を受け入れる関数を使用できるという事実です (なぜなら、 「円」である場合とそうでない場合があります)。

于 2012-11-16T09:24:18.070 に答える