CS0310 de erro do compilador

Mensagem de erro

O tipo 'typename' deve ser um tipo não-abstrata com um construtor público sem parâmetros para usá-lo sistema autônomo parâmetro 'parameter' no tipo genérico ou método 'genérico'

O tipo genérico ou método define uma nova restrição em seu onde cláusula, portanto, qualquer tipo deve ter um construtor público sem parâmetros para ser usado sistema autônomo um argumento de tipo para aquele tipo genérico ou método.Para evitar esse erro, certifique-se de que o tipo tem o construtor correto ou modificar a cláusula de restrição de tipo genérico ou método.

Exemplo

O exemplo a seguir gera 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());
    }
}