Прочитать на английском

Поделиться через


Ошибка компилятора CS0456

Параметр типа "Имя параметра типа 1" имеет ограничение struct, следовательно, "Имя параметра типа 1" не может использоваться как ограничение для "Имя параметра типа 2"

Ограничения типа значения являются неявно запечатанными, поэтому их нельзя использовать в качестве ограничений для второго параметра типа. Это обусловлено тем, что типы значений нельзя переопределять. Для устранения этой ошибки поместите ограничение типа значения непосредственно во второй параметр типа, вместо того чтобы делать это косвенно посредством первого параметра типа.

Пример

Следующий пример приводит к возникновению ошибки CS0456:

// 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  
   }  
}