내 문제가 어떻게 불려지는지 모르겠으므로 아무도 같은 질문을 최근에 또는 전혀 요구하지 않았다는 것을 보장 할 수는 없습니다.Generics and Inheritance (나의 나쁜 제목을 용서하십시오)
비슷한 제목의 스레드가 꽤 있지만, 내 문제와 관련이없는 것 같았습니다.
제네릭을 구현하는 사용자 지정 목록 클래스가 있습니다.
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 */ }
}
나는 또한 수업이 있습니다
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에 비록 (의 :
class Apple : Fruit
지금
class Banana : Fruit
를, 관련 코드를 제공 애플)과 애플은 과일입니다, VisualStudio는 accep하지 않습니다 MyList (Of Apple)를 인수로 사용하면 MyList (Of Fruit)에 질문합니다. 나는이 같은 목록을 선언한다면
그러나 :
MyList<object> fruitList = new MyList<object>();
그런 다음 모든 것을 다시 작동합니다. 정확히 내가 뭘 잘못 했니?
답변을 많이 주시면 감사하겠습니다. 답장을하지 않고도 시간을내어 읽어 주셔서 감사합니다.
참고는 이것에 관한 주요 키워드는 공분산, 반항 및 불변이다. 예, 당신이 그것에 대해 모를 때 찾기가 다소 어렵습니다. – delnan
'IList'을 구현해야합니다. –
SLaks
.Net의 공용 멤버 이름은 UpperCamelCase 여야합니다. – SLaks