次の方法で共有


コンパイラ エラー 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());  
    }  
}