更新:2007 年 11 月

错误消息

不能将类型“type1”用作泛型类型或方法“<name>”中的类型参数“T”。没有从“type1”到“type2”的隐式引用转换。

在将某一约束应用于泛型类型参数时,必须存在从具体参数到该约束类型的隐式标识或引用转换。

更正此错误

  1. 更改要在创建类时使用的参数。

  2. 如果您拥有类,则可移除约束或执行某一操作以启用隐式引用或标识转换。例如,可以使第二个类型从第一个类型继承。

示例

 复制代码
// cs0311.cs
class B{}
class C{}
class Test<T> where T : C
{ }

class Program
{
    static void Main()
    {
        Test<B> test = new Test<B>(); //CS0311
    }
}

如果在尝试使用值类型参数时发生此错误,您会发现隐式数值转换(例如,从 shortint 的转换)不满足泛型类型参数的约束。

请参见

参考

类型参数的约束(C# 编程指南)