Não é possível converter de List <DerivedClass> para List <BaseClass>
Estou tentando passar uma lista deDerivedClass
para uma função que leva uma lista deBaseClass
, mas recebo o erro:
cannot convert from
'System.Collections.Generic.List<ConsoleApplication1.DerivedClass>'
to
'System.Collections.Generic.List<ConsoleApplication1.BaseClass>'
Agora eu poderia lançar meuList<DerivedClass>
para umList<BaseClass>
, mas não me sinto confortável fazendo isso a menos que eu entenda porque o compilador não permite isso.
As explicações que eu encontrei simplesmente disseram que isso viola a segurança do tipo de alguma forma, mas eu não estou vendo isso. Alguém pode me ajudar?
Qual é o risco do compilador permitir a conversão deList<DerivedClass>
paraList<BaseClass>
?
Aqui está o meu SSCCE:
class Program
{
public static void Main()
{
BaseClass bc = new DerivedClass(); // works fine
List<BaseClass> bcl = new List<DerivedClass>(); // this line has an error
doSomething(new List<DerivedClass>()); // this line has an error
}
public void doSomething(List<BaseClass> bc)
{
// do something with bc
}
}
class BaseClass
{
}
class DerivedClass : BaseClass
{
}