【发布时间】:2012-08-10 18:59:45
【问题描述】:
可能重复:
Why isn't there generic variance for classes in C# 4.0?
例子:
interface foo<out T> where T : BaseThing { }
编译
class foo<out T> where T : BaseThing { }
没有。
这只是不受支持,还是出于某种原因它永远无法工作或没有逻辑意义?
编辑:如果有人想知道,这就是我想做的事情......
class BaseThing { }
class DerivedThing : BaseThing { }
class foo<out T> where T : BaseThing { }
class bar : foo<DerivedThing> { }
private void test()
{
foo<BaseThing> fooInstance = new bar();
}
【问题讨论】:
-
好吧,documentation 表示
out仅支持接口和委托。至于为什么要这样设计,我相信 Eric Lippert 最终会看到这个问题并给你一个全面的答案(没有足够的用例,或者所有用例都不常见等等......)。
标签: c#