編譯器錯誤 CS0453
類型 'Type Name' 必須是不可為 Null 的實值類型,才能在泛型類型或方法 'Generic Identifier' 中作為參數 'Parameter Name' 使用
如果具現化具有 value 限制式的泛型型別或方法時使用非實值型別引數,則會發生這個錯誤。 它也可能發生於使用可為 Null 的實值類型引數時。 請參閱下列範例中的最後兩行程式碼。
下列程式碼會產生這個錯誤。
// CS0453.cs
using System;
public class HV<S> where S : struct { }
// CS0453: string is not a value type
public class H1 : HV<string> { }
// CS0453: H1 is a class, not a struct
public class H2 : HV<H1> { }
// CS0453: HV is based on a class, not a struct
public class H3<S> : HV<S> where S : class { }
public class H4<S> : HV<S> where S : struct { } // OK
// CS0453: HV accepts a nullable int type
public class H4 : HV<int?> { }
// CS0453: HV is based on Nullable type of int
public class H5 : HV<Nullable<Nullable<int>>> { }