using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Variance
{
class A { }
class B : A { }
class C<out T> { }
class Program
{
static void Main(string[] args)
{
var v = new C<B>();
CA(v);
}
static void CA(C<A> v) { }
}
}
最佳答案
这是违规行:
class C<out T>
正如错误消息告诉您的那样,您不能将泛型变化应用于类,只能应用于接口(interface)和委托(delegate)。这没关系:
interface C<out T>
以上不是。
详情见Creating Variant Generic Interfaces
关于c# - 为什么我会收到以下错误?无效的方差修饰符。只有接口(interface)和委托(delegate)类型参数可以指定为变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2042678/