共用方式為


編譯器錯誤 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;
    }
}

請參閱

參考

型別參數的條件約束 (C# 程式設計手冊)

Boxing 和 Unboxing (C# 程式設計手冊)