編譯器錯誤 CS0312
'type1' 類型不能作為泛型類型或 'name' 方法中的類型參數 'name' 使用。 可為 Null 的類型 'type1' 無法滿足 'type2' 的條件約束。
可為 Null 的實值型別與其不可為 Null 的對應項目不同;這兩者之間沒有隱含參考轉換或識別轉換存在。 可為 Null 的 boxing 轉換不符合泛型類型條件約束。 在接下來的範例中,第一個類型參數是 Nullable<int>
,第二個類型參數是 System.Int32
。
請移除條件約束。
在下列範例中,請讓第二個類型引數成為
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 的值之間允許各種轉換。