Compilerfehler 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.
Der generische Typ oder die generische Methode definieren die new()
-Einschränkung in der 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. 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.
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());
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für