Auf Englisch lesen

Freigeben über


Compilerfehler CS0456

Typparameter „Type Parameter Name 1“ weist die Einschränkung „struct“ auf, daher kann „Type Parameter Name 1“ nicht als Einschränkung für „Type Parameter Name 2“ verwendet werden.

Werttypeinschränkungen sind implizit versiegelt, sodass diese Einschränkungen nicht als Einschränkungen für einen zweiten Typparameter verwendet werden können. Grund hierfür ist, dass Werttypen nicht außer Kraft gesetzt werden können. Um diesen Fehler zu beheben, legen Sie Werttypeinschränkung direkt für den zweiten Typparameter, anstatt indirekt mit dem ersten Typparameter fest.

Beispiel

Im folgenden Beispiel wird CS0456 generiert:

C#
// CS0456.cs  
// compile with: /target:library  
public class GenericsErrors  
{  
   public class G5<T> where T : struct  
   {  
      public class N<U> where U : T {}   // CS0456  
      public class N2<U> where U : struct {}   // OK  
   }  
}