次の方法で共有


コンパイラ エラー CS0310

更新 : 2007 年 11 月

エラー メッセージ

'typename' は、ジェネリック型またはメソッド 'generic' 内でパラメータ 'parameter' として使用するために、パブリック パラメータを持たないコンストラクタを持つ抽象でない型でなければなりません

ジェネリック型またはジェネリック メソッドの where 句に new 制約が定義されているため、その型引数には public として宣言された、パラメータなしのコンストラクタを使用する必要があります。このエラーを回避するには、型に適切なコンストラクタを使用するか、ジェネリック型またはジェネリック メソッドの制約句を変更します。

使用例

次の例では 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());
    }
}