使用英语阅读

通过


编译器错误 CS0312

不能将类型“type1”用作泛型类型或方法“name”中的类型参数“name”。 可以为 null 的类型“type1”不满足“type2”的约束。

可以为 null 的值类型与其不可为 null 的对应类型不同;它们之间不存在隐式引用转换或标识转换。 可以为 null 的装箱转换不满足泛型类型约束。 在以下示例中,第一个类型形参是 Nullable<int> ,第二个类型形参是 System.Int32

更正此错误

  1. 删除该约束。

  2. 在以下示例中,令第二个类型实参为 int?object

示例

以下代码生成 CS0312:

// cs0312.cs  
class Program  
{  
    static void MTyVar<T, U>() where T : U { }  
  
    static int Main()  
    {  
        MTyVar<int?, int>(); // CS0312  
        return 1;  
    }  
}  

尽管可以为 null 的值类型与不可为 null 的类型不同,但可以为 null 和不可为 null 值之间允许存在各种类型的转换。

另请参阅