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


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

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

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

Наследуемые члены 'member1' и 'member2' имеют одинаковые сигнатуры в типе 'type', поэтому их нельзя переопределять
The inherited members 'member1' and 'member2' have the same signature in type 'type', so they cannot be overridden

Эта ошибка возникает при введении универсальных типов. В обычной ситуации наличие в классе двух версий одного метода с одинаковыми сигнатурами невозможно. Но в случае универсальных типов существует возможность определения универсального метода, который может продублировать другой метод в случае создания экземпляра с определенным типом.

Пример

При создании экземпляра с типом C<int> создаются две версии метода F с одинаковой сигнатурой, поэтому при выполнении переопределения в классе D компилятор не может решить, какой из них нужно переопределять.

Следующий пример проводит к генерированию ошибки CS0462.

// CS0462.cs
// compile with: /target:library
class C<T> 
{
   public virtual void F(T t) {}
   public virtual void F(int t) {}
}

class D : C<int> 
{
   public override void F(int t) {}   // CS0462
}