以这个小的LINQPad为例:
void Main() { Foo<object> foo = new Foo<string>(); Console.WriteLine(foo.Get()); } class Foo<out T> { public T Get() { return default(T); } }
它无法编译这个错误:
方差修改器无效。只有接口和委托类型参数可以指定为变体。
为什么这是不允许的呢?
相似问题