这已经在C#4.0中引入了,但是有没有办法在c#3.0中实现这一点?有没有办法在C#3.0中实现泛型类型的协变?
对于例如,考虑下面的代码:
class Base
{
}
class Derived1 : Base
{
}
class Derived2 : Base
{
}
class User<T> where T : Base
{
}
class User1 : User<Derived1>
{
}
现在,我想有User<T>
名单,我在其中可以存储User<Derived1>
以及User<Derived2>
,但下面的代码无法编译C#3.0:
List<User<Base>> users = new List<User<Base>>();
users.Add(new User1());
任何想法?
如果你可以在C#3中实现它,他们不需要在C#4中引入它。此外,没有C#3.5这样的东西。它是C#3.0,.NET 3.5。 – 2010-04-05 13:36:21
@John:积分 - 他们两人。 :P。有没有解决方法? – nullDev 2010-04-05 13:39:15
使用F#作为解决方法? :) – 2010-04-05 13:43:37