私の問題がどのように呼ばれているかわからないので、誰も同じ質問を最近または全く質問していないことを保証することはできません。ジェネリックと継承について(私の悪いタイトルを許して)
私は気付きましたが、同様のタイトルのスレッドがかなりありますが、私の問題には関係していないようです。
私はジェネリックスを実装するカスタムリストクラスを持っています。
class MyList<T>
{
public void add(T item) // adds an item to the list
{ /* code */ }
public void add(MyList<T> list) // attaches an existing list to the end of the current one
{ /* code */ }
}
私も授業があります。
class Apple : Fruit
と
class Banana : Fruit
を今、関連するコードを付属しています。
MyList<Fruit> fruitList = new MyList<Fruit>();
// fill fruitList
fruitList.add(new Apple()); // works, of course
fruitList.add(new Banana()); // works as well, of course
MyList<Apple> appleList = new MyList<Apple>();
// fill appleList
fruitList.add(appleList); // doesn't work. Why?
appleListがMYLISTですが(うちアップル)とアップルはフルーツ、VisualStudioはaccepしないMyList(Of Apple)の引数としてMyList(Of Fruit)が尋ねられます。私はこのようなリストを宣言した場合
しかし、:
MyList<object> fruitList = new MyList<object>();
はその後、すべてが再び動作します。私は間違って何をしたのですか?
回答が大変ありがとうございます。また、お返事いただいても、お返事ありがとうございます。
FYI、.NETで4.0 IEnumerableインターフェイスは、それの型パラメータTに共変であるという理由だけで、これは定義は次のようになりますこれに関する主なキーワードは、共分散、反分散、不変性です。はい、あなたがそれについて知らない時に見つけるのはむしろ難しいです。 – delnan
'IList'を実装するべきです。 –
SLaks
.Netのパブリックメンバー名はUpperCamelCaseである必要があります。 – SLaks