更新: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;
    }
}

请参见

参考

类型参数的约束(C# 编程指南)
装箱和取消装箱(C# 编程指南)