更新:2007 年 11 月
错误消息
不能将类型“type1”用作泛型类型或方法“name”中的类型参数“name”。可为 null 的类型“type1”未满足“type2”的约束。可为 null 的类型与其对应的不可为 null 的类型截然不同;不能在这两者之间执行隐式引用转换或标识转换。可为 null 的装箱转换未满足泛型类型约束。在下面的示例中,第一个类型参数为 Nullable<int>,而第二个类型参数为 System.Int32。
更正此错误
移除约束。
在下面的示例中,使第二个类型参数为 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 的值之间执行各种转换。