編譯器錯誤 CS0311
更新:2007 年 11 月
錯誤訊息
型別 'type1' 不能做為泛型型別或方法 '<name>' 中的型別參數 'T'。沒有從 'type1' 到 'type2' 的隱含參考轉換。
將條件約束 (Constraint) 套用至泛型型別參數時,具象引數與條件約束型別之間必須要有隱含自身或參考轉換。
若要更正這個錯誤
變更用來建立類別 (Class) 的引數。
如果您擁有這個類別,則可以移除條件約束或進行其他作業以啟用隱含參考或自身轉換。例如,您可以讓第二個型別繼承第一個型別。
範例
// cs0311.cs
class B{}
class C{}
class Test<T> where T : C
{ }
class Program
{
static void Main()
{
Test<B> test = new Test<B>(); //CS0311
}
}
如果嘗試使用實值型別引數時發生這個錯誤,請注意隱含數值轉換 (例如,從 short 到 int) 未滿足泛型型別參數。