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

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


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

Ограничения для переопределения и явной реализации методов интерфейса унаследованы от базового метода, поэтому они не могут быть указаны явно

Если универсальный метод, который является частью производного класса, переопределяет метод базового класса, для переопределяющего метода нельзя указывать ограничения. Переопределяющий метод в производном классе наследует ограничения от метода базового класса.

Пример

При компиляции следующего примера возникнет ошибка CS0460.

// CS0460.cs  
// compile with: /target:library  
class BaseClass
{  
   BaseClass() { }  
}  
  
interface I  
{  
   void F1<T>() where T : BaseClass;  
   void F2<T>() where T : struct;  
   void F3<T>() where T : BaseClass;  
}  
  
class ExpImpl : I  
{  
   void I.F1<T>() where T : BaseClass {}   // CS0460  
   void I.F2<T>() where T : class {}  // CS0460  
}