编译器错误 CS0315
更新:2007 年 11 月
错误消息
不能将类型“valueType”用作泛型类型或方法“TypeorMethod<T>”中的类型参数“T”。没有从“valueType”到“referenceType”的装箱转换。
如果将泛型类型约束为特定类,并且尝试使用不能隐式装箱到该类的值类型构造该类的实例,则会发生此错误。
更正此错误
- 一种解决方案是将该结构重新定义为类。
示例
下面的示例生成 CS0315:
// cs0315.cs
public class ClassConstraint { }
public struct ViolateClassConstraint { }
public class Gen<T> where T : ClassConstraint
{
}
public class Test
{
public static int Main()
{
Gen<ViolateClassConstraint> g = new Gen<ViolateClassConstraint>(); //CS0315
return 1;
}
}