编译器错误 CS0315
不能将类型“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;
}
}