C # Casting einer Liste <ObjBase> als Liste <Obj>
Warum kann ich nicht einList<ObjBase>
wieList<Obj>
? Warum funktioniert Folgendes nicht:
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>();
}
}
Stattdessen muss ich Folgendes tun:
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>();
}
}
In Visual Studio 2008 wird der folgende Fehler angezeigt (aus Gründen der Lesbarkeit gekürzt):
Der Typ 'Liste' kann nicht über eine Referenzkonvertierung, Boxing-Konvertierung, Unboxing-Konvertierung, Wrapping-Konvertierung oder Null-Typ-Konvertierung in 'Liste' konvertiert werden
Vielen Dank.