共用方式為


編譯器錯誤 CS0311

更新:2007 年 11 月

錯誤訊息

型別 'type1' 不能做為泛型型別或方法 '<name>' 中的型別參數 'T'。沒有從 'type1' 到 'type2' 的隱含參考轉換。

將條件約束 (Constraint) 套用至泛型型別參數時,具象引數與條件約束型別之間必須要有隱含自身或參考轉換。

若要更正這個錯誤

  1. 變更用來建立類別 (Class) 的引數。

  2. 如果您擁有這個類別,則可以移除條件約束或進行其他作業以啟用隱含參考或自身轉換。例如,您可以讓第二個型別繼承第一個型別。

範例

// 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) 未滿足泛型型別參數。

請參閱

參考

型別參數的條件約束 (C# 程式設計手冊)