共用方式為


編譯器錯誤 CS0312

更新:2007 年 11 月

錯誤訊息

型別 'type1' 不能做為泛型型別或方法 'name' 中的型別參數 'name'。可為 Null 的型別 'type1' 未滿足 'type2' 的條件約束。

可為 Null 型別 (Nullable Type) 與其不可為 Null 的對應型別不同,它們之間並沒有隱含參考轉換或識別轉換。而可為 Null 的 boxing 轉換並不滿足泛型型別條件約束 (Constraint)。在下列範例中,第一個型別參數是 Nullable<int>,而第二個型別參數是 System.Int32

若要更正這個錯誤

  1. 移除條件約束。

  2. 在下列範例中,將第二個型別引數製作為 int? 或 object。

範例

下列程式碼會產生 CS0312:

// 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 值之間進行多種轉換。

請參閱

參考

可為 Null 的型別 (C# 程式設計手冊)