Folgendes Snippet wird nicht kompiliert. Mit folgenden Fehler:C#: Keine Implikaturkonvertierung von Klasse <Child> in Klasse <Base>
Cannot implicitly convert type 'Container<ChildClass>' to 'Container<BaseClass>'
class BaseClass {}
class ChildClass : BaseClass {}
class Container<T> where T : BaseClass {}
class Program {
static void Main() {
// why doesn't this work?
Container<BaseClass> obj = new Container<ChildClass>();
}
}
Ist das von Design? Wenn es ist, was ist der Grund?
Dieses Problem tritt erwartungsgemäß einmal pro Woche auf. –
... und dann sagt Marc Gravell vorhersehbar, dass die Unterstützung für Covarianz in C# 4 begrenzt ist: –
Nun, es ist * begrenzt! Ich bin es leid zu lesen, aber es wird in C# 4.0 funktionieren, was einfach nicht stimmt ... (für Listen, zumindest) –