的隱含轉換下面的代碼段不會編譯。隨着以下錯誤:C#:沒有從類<Child>到類<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>();
}
}
設計是這樣嗎?如果是這樣,原因是什麼?
這個問題可以預見每週會出現一次。 – 2009-06-11 14:55:45
...然後Marc Gravell預測告訴大家,C#4中的協變支持是有限的:) – 2009-06-11 14:57:23
那麼它*是*限制的!我厭倦了閱讀「但它會在C#4.0中工作」,這是不正確的......(至少對於列表) – 2009-06-11 14:58:50