Compilerfehler CS0310
Aktualisiert: November 2007
Fehlermeldung
Der Typ "Typname" muss ein abstrakter Typ mit einem öffentlichen parameterlosen Konstruktor sein, um im generischen Typ oder der generischen Methode "Generikum" 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 bzw. die generische Methode definiert eine neue Einschränkung in der where-Klausel. Daher muss jeder Typ einen öffentlichen, parameterlosen Konstruktor besitzen, damit er als Typargument für diesen generischen Typ oder die generische Methode verwendet werden kann. Stellen Sie zur Vermeidung dieses Fehlers sicher, dass der Typ den korrekten Konstruktor aufweist, oder ändern Sie die Einschränkungsklausel des generischen Typs bzw. der generischen Methode.
Beispiel
Im folgenden Beispiel wird CS0310 generiert:
// 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());
}
}