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.

questionAnswers(11)

yourAnswerToTheQuestion