C # Rzucanie listy <ObjBase> jako Lista <Obj>
Dlaczego nie mogę rzucićList<ObjBase>
tak jakList<Obj>
? Dlaczego poniższe nie działają:
internal class ObjBase
{
}
internal class Obj : ObjBase
{
}
internal class ObjManager
{
internal List<Obj> returnStuff()
{
return getSomeStuff() as List<Obj>;
}
private List<ObjBase> getSomeStuff()
{
return new List<ObjBase>();
}
}
Zamiast tego muszę to zrobić:
internal class ObjBase
{
}
internal class Obj : ObjBase
{
}
internal class ObjManager
{
internal List<Obj> returnStuff()
{
List<ObjBase> returnedList = getSomeStuff();
List<Obj> listToReturn = new List<Obj>(returnedList.Count);
foreach (ObjBase currentBaseObject in returnedList)
{
listToReturn.Add(currentBaseObject as Obj);
}
return listToReturn;
}
private List<ObjBase> getSomeStuff()
{
return new List<ObjBase>();
}
}
W programie Visual Studio 2008 pojawia się następujący błąd (skrócony ze względu na czytelność):
Nie można przekonwertować typu „Lista” na „Lista” za pomocą konwersji odniesienia, konwersji boksu, konwersji rozpakowywania, konwersji zawijania lub konwersji typu zerowego
Dzięki.