Ошибка компилятора 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
}