Я пытаюсь передать список 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
{
}