Sorunumun nasıl çağrıldığını bilmediğimden, kimsenin aynı soruyu yakın zamanda ya da hiç istemediğini garanti edemem.Generics ve Inheritance hakkında (kötü başlığımı affet)
Fark ettim ki, benzer bir başlığa sahip birkaç konu var, ancak benim sorunumla alakalı görünmüyorlar.
Generics'i uygulayan özel bir liste sınıfım var.
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 */ }
}
Ben de sınıfları:
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 bir MyList olmasına rağmen (ki:
class Apple : Fruit
ve Şimdi
class Banana : Fruit
, ilgili kod geliyor Apple) ve Apple Meyve, VisualStudio kabul etmiyor MyList (Of Fruit) sorgusu sorulduğunda MyList (Of Apple) argüman olarak. Böyle listeyi ilan etmek olsaydı
Ancak:
MyList<object> fruitList = new MyList<object>();
Sonra her şey yeniden çalışır. Tam olarak ne yanlış yaptım?
Bir cevap çok takdir edilecek ve cevap vermeden bile okumaya zaman ayırdığınız için teşekkür ederiz.
Bilginize, Bununla ilgili ana anahtar kelimeler kovaryans, kontrasepsiyon ve değişmezliktir. Evet, bunu bilmediğin zaman bulmak zor. – delnan
IList 'öğesini uygulamanız gerekir. –
SLaks
.Net'deki genel üye adları UpperCamelCase olmalıdır. Daha iyi bir tasarım önermek için – SLaks