インタフェース:
インタフェースIPlay <
T >
{}ジェネリック型内キャスト問題が、同じタイプ
クラス:
クラスMp3Player:IPlay <
INT >
{}
クラスOggPlayer。 IPlay <
double >
{}
class DummyPlayer:IPlay <
オブジェクト>
{}使用しようとする
:
1 IPlay <
オブジェクト>
プレーヤー=新しいMp3Player()。
2. IPlay <
int >
player2 = new OggPlayer();
Aビッグ1と2の用途はなぜキャストできないのですか?
int to object、またはintをdoubleにします。それはノンネリックなケースで可能です。他の方法はありますか?
それは*正確な*の重複はありませんが、私はこの質問には、すべてのコに非常に近いので、そこに/ contravarianceの質問を閉じるために投票しています。いくつかの議論のためにこれをチェックしてください:http://stackoverflow.com/questions/6557/in-c-why-cant-a-liststring-object-be-stored-in-a-listobject-variable –