Konvertierung von List <DerivedClass> nach List <BaseClass> nicht möglich
Ich versuche, eine Liste von zu übergebenDerivedClass
zu einer Funktion, die eine Liste von nimmtBaseClass
, aber ich bekomme den Fehler:
cannot convert from
'System.Collections.Generic.List<ConsoleApplication1.DerivedClass>'
to
'System.Collections.Generic.List<ConsoleApplication1.BaseClass>'
Jetzt konnte ich meine abgebenList<DerivedClass>
zu einemList<BaseClass>
Aber ich fühle mich nicht wohl dabei, wenn ich nicht verstehe, warum der Compiler dies nicht zulässt.
Erklärungen, die ich gefunden habe, haben einfach gesagt, dass es irgendwie die Typensicherheit verletzt, aber ich sehe es nicht. Kann mir jemand weiterhelfen?
Welches Risiko besteht für den Compiler, der die Konvertierung von zulässt?List<DerivedClass>
zuList<BaseClass>
?
Hier ist meine 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
{
}