Compiler Error CS0413

Der "Typparameter"-Typparameter kann nicht mit dem Operator "as" verwendet werden, da er nicht über eine Einschränkung für einen Klassentyp oder über eine class-Einschränkung verfügt.

Dieser Fehler tritt auf, wenn ein generischer Typ den Operator as verwendet, der generische Typ jedoch keine Klassentypeinschränkung aufweist. Der Operator as 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 Operator as 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);  
   }  
}