編譯器錯誤 CS0315
類型 'valueType' 不能作為泛型型別或方法 'TypeorMethod<T>' 中的型別參數 'T'。 沒有從 'valueType' 到 'referenceType' 的 Boxing 轉換。
如果您將泛型類型限制為特定類別,並嘗試使用無法對其進行隱含 Box 處理的實值類型來建構該類別的執行個體,則會發生這個錯誤。
- 其中一個解決方案是將結構重新定義為類別。
下列範例會產生 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;
}
}