Compilerfehler CS0413
The type parameter 'type parameter' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint (Der Typparameter „typparameter“ kann nicht mit dem „as“-Operator verwendet werden, da er weder über eine Klassentypeinschränkung noch über eine Klasseneinschränkung verfügt)
Dieser Fehler tritt auf, wenn ein generischer Typ den as-Operator verwendet, aber keine Klassentypeinschränkung aufweist. Der as
-Operator ist nur bei Verweistypen und Nullable-Werttypen zulässig. Daher muss der Typparameter eingeschränkt werden, um zu garantieren, dass er kein Werttyp ist. Um diesen Fehler zu vermeiden, verwenden Sie eine Klassentypeinschränkung oder eine Verweistypeinschränkung.
Dies liegt daran, dass der as
-Operator null
zurückgeben kann, was kein zulässiger Wert für einen Werttyp ist. Der Typparameter muss als Werttyp behandelt werden, es sei denn, er verfügt über eine Klassentypeinschränkung oder eine Verweistypeinschränkung.
Beispiel
Im folgenden Beispiel wird CS0413 generiert:
// CS0413.cs
// compile with: /target:library
class A {}
class B : A {}
class CMain
{
A a = null;
public void G<T>()
{
a = new A();
System.Console.WriteLine (a as T); // CS0413
}
// OK
public void H<T>() where T : A
{
a = new A();
System.Console.WriteLine (a as T);
}
}
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