Не удается преобразовать из списка <DerivedClass> в список <BaseClass>
Я пытаюсь передать списокDerivedClass
к функции, которая принимает списокBaseClass
, но я получаю ошибку:
cannot convert from
'System.Collections.Generic.List<ConsoleApplication1.DerivedClass>'
to
'System.Collections.Generic.List<ConsoleApplication1.BaseClass>'
Теперь я мог бы бросить свойList<DerivedClass>
кList<BaseClass>
, но я не чувствую себя комфортно, если не понимаю, почему компилятор этого не допускает.
Объяснения, которые я нашел, просто сказали, что это как-то нарушает безопасность типов, но я этого не вижу. Может кто-нибудь мне помочь?
Каков риск того, что компилятор разрешит преобразование изList<DerivedClass>
вList<BaseClass>
?
Вот мой 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
{
}