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.

Antworten auf die Frage(11)

Ihre Antwort auf die Frage