閱讀英文

共用方式為


編譯器錯誤 CS0312

'type1' 類型不能作為泛型類型或 'name' 方法中的類型參數 'name' 使用。 可為 Null 的類型 'type1' 無法滿足 'type2' 的條件約束。

可為 Null 的實值型別與其不可為 Null 的對應項目不同;這兩者之間沒有隱含參考轉換或識別轉換存在。 可為 Null 的 boxing 轉換不符合泛型類型條件約束。 在接下來的範例中,第一個類型參數是 Nullable<int> ,第二個類型參數是 System.Int32

更正這個錯誤

  1. 請移除條件約束。

  2. 在下列範例中,請讓第二個類型引數成為 int?object

範例

下列程式碼會產生 CS0312:

C#
// cs0312.cs  
class Program  
{  
    static void MTyVar<T, U>() where T : U { }  
  
    static int Main()  
    {  
        MTyVar<int?, int>(); // CS0312  
        return 1;  
    }  
}  

雖然可為 Null 的實值型別與不可為 Null 的類型不同,但在可為 Null 的值與不可為 Null 的值之間允許各種轉換。

另請參閱