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


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

Обновлен: Ноябрь 2007

Сообщение об ошибке

Ограничения для переопределения и явной реализации методов интерфейса унаследованы от базового метода, поэтому они не могут быть указаны явно
Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly

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

Пример

Следующий пример проводит к созданию ошибки 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
}