Compiler Error CS0311
不能将类型“type1”用作泛型类型或 '<name>方法中的类型参数“T”。没有从“type1”到“type2”的隐式引用转换。
在将某一约束应用于泛型类型参数时,必须存在从具体参数到该约束类型的隐式标识或引用转换。
更正此错误
更改要在创建类时使用的参数。
如果您拥有类,则可移除约束或执行某一操作以启用隐式引用或标识转换。例如,可以使第二个类型从第一个类型继承。
// cs0311.cs
class B{}
class C{}
class Test<T> where T : C
{ }
class Program
{
static void Main()
{
Test<B> test = new Test<B>(); //CS0311
}
}
如果在尝试使用值类型参数时发生此错误,您会发现隐式数值转换(例如,从 short 到 int 的转换)不满足泛型类型参数的约束。