更新 : 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());
}
}