共用方式為


編譯器錯誤 CS0310

更新:2007 年 11 月

錯誤訊息

型別 'typename' 必須是具有公用無參數建構函式的非抽象型別,才能在泛型型別或方法 'generic' 中做為參數 'parameter' 使用

泛型型別或方法會在其 where 子句中定義新的條件約束 (Constraint),所以任何型別都必須有公用的無參數建構函式 (Constructor),才能做為該泛型型別或方法的型別引數使用。若要避免這個錯誤,請確認該型別的建構函式正確,或修改泛型型別或方法的條件約束子句。

範例

下列範例會產生 CS0310:

// CS0310.cs
using System;

class G<T> where T : new()
{
    T t;

    public G()
    {
        t = new T();
        Console.WriteLine(t);
    }
}

class B
{
    private B() { }
    // Try this instead:
    // public B() { }
}

class CMain
{
    public static void Main()
    {
        G<B> g = new G<B>();   // CS0310
        Console.WriteLine(g.ToString());
    }
}