Compilerfehler CS0413
Aktualisiert: November 2007
Fehlermeldung
Der "Typparameter"-Typparameter kann nicht mit dem as-Operator verwendet werden, da er nicht über eine Einschränkung für einen Klassentyp oder über eine class-Einschränkung verfügt.
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
Dieser Fehler tritt auf, wenn ein generischer Typ den as-Operator verwendet, der generische Typ jedoch keine Klassentypeinschränkung aufweist. Der as-Operator ist nur bei Referenztypen zulässig. Daher muss der Typparameter eingeschränkt werden, damit gewährleistet ist, dass es sich nicht um einen Werttyp handelt. Um diesen Fehler zu vermeiden, verwenden Sie eine Klassentypeinschränkung oder eine Referenztypeinschränkung.
Das ist erforderlich, weil der as-Operator null zurückgegeben kann. Dieser Wert ist jedoch für einen Werttyp nicht zulässig. Der Typparameter muss als Werttyp behandelt werden, es sei denn, es handelt sich um eine Klassentypeinschränkung oder eine Referenztypeinschrä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);
}
}