Не удается преобразовать из списка <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
{
}

Ответы на вопрос(6)

Ваш ответ на вопрос