編譯器錯誤 CS0312
更新:2007 年 11 月
錯誤訊息
型別 'type1' 不能做為泛型型別或方法 'name' 中的型別參數 'name'。可為 Null 的型別 'type1' 未滿足 'type2' 的條件約束。
可為 Null 型別 (Nullable Type) 與其不可為 Null 的對應型別不同,它們之間並沒有隱含參考轉換或識別轉換。而可為 Null 的 boxing 轉換並不滿足泛型型別條件約束 (Constraint)。在下列範例中,第一個型別參數是 Nullable<int>,而第二個型別參數是 System.Int32。
若要更正這個錯誤
移除條件約束。
在下列範例中,將第二個型別引數製作為 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 值之間進行多種轉換。