Compilerfehler CS0311
Der Typ type1 kann nicht als Typparameter „T“ im generischen Typ oder in der generischen Methode <name> verwendet werden. Es findet keine implizite Verweiskonvertierung von „type1“ in „type2“ statt.
Wenn eine Einschränkung auf einen generischen Typparameter angewendet wird, muss eine implizite Identitäts- oder Verweiskonvertierung aus dem konkreten Argument in den Typ der Einschränkung vorliegen.
So beheben Sie diesen Fehler
Ändern Sie das Argument, das Sie zum Erstellen der Klasse verwenden.
Wenn Sie die Klasse besitzen, können Sie die Einschränkung entfernen oder ansonsten Maßnahmen ergreifen, um eine implizite Verweis- oder Identitätskonvertierung zu ermöglichen. Beispielsweise können Sie den zweiten Typ vom ersten erben lassen.
Beispiel
// cs0311.cs
class B {}
class C {}
class Test<T> where T : C
{ }
class Program
{
static void Main()
{
Test<B> test = new Test<B>(); //CS0311
}
}
Wenn dieser Fehler bei dem Versuch auftritt, ein Werttyp-Argument zu verwenden, beachten Sie, dass eine implizite numerische Konvertierung, beispielsweise von short
in int
, einem Parameter des generischen Typs nicht genügt.
Weitere Informationen
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