編譯器錯誤 CS0315
更新:2007 年 11 月
錯誤訊息
型別 'valueType' 不能做為泛型型別或方法 'TypeorMethod<T>' 中的型別參數 'T'。沒有從 'valueType' 到 'referenceType' 的 Boxing 轉換。
如果將泛型型別限制為特定類別 (Class),並嘗試使用無法對其進行隱含 Box 的實值型別 (Value Type) 來建構該類別的執行個體 (Instance),則會發生這個錯誤。
若要更正這個錯誤
- 其中一個解決方法是將結構 (Struct) 重新定義為類別。
範例
下列範例會產生 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;
}
}