Compilerfehler CS0310Compiler Error CS0310

Der Typ "typname" muss ein nicht abstrakter Typ mit einem öffentlichen parameterlosen Konstruktor sein, um im generischen Typ oder in der Methode "generic" als Parameter "parameter" verwendet werden zu können.The type 'typename' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'parameter' in the generic type or method 'generic'

Der generische Typ oder die generische Methode definieren eine neue Einschränkung in ihrer where-Klausel, weshalb jeder Typ einen öffentlichen parameterlosen Konstruktor aufweisen muss, um als Typargument für diesen generischen Typ oder diese generische Methode verwendet werden zu können.The generic type or method defines a new constraint in its where clause, so any type must have a public parameterless constructor in order to be used as a type argument for that generic type or method. Um diesen Fehler zu vermeiden, achten Sie darauf, dass der Typ über den korrekten Konstruktor verfügt, oder modifizieren Sie die Klausel des generischen Typs oder der generischen Methode.To avoid this error, make sure that the type has the correct constructor, or modify the constraint clause of the generic type or method.

BeispielExample

Im folgenden Beispiel wird CS0310 generiert:The following sample generates 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());  
    }  
}