コンパイラ エラー CS0310
'typename' は、ジェネリック型またはメソッド 'generic' 内でパラメーター 'parameter' として使用するために、パブリック パラメーターなしのコンストラクターを持つ非抽象型でなければなりません
ジェネリック型またはメソッドでは where
句で new()
制約を定義するため、そのジェネリック型またはメソッドに型引数として使用するには、どの型でもパラメーターなしのパブリック コンストラクターがある必要があります。 このエラーを回避するには、型のコンストラクターが正しいことを確認するか、ジェネリック型またはメソッドの制約句を修正します。
例
次の例では 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());
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET