Errore del compilatore CS0462

Aggiornamento: novembre 2007

Messaggio di errore

I membri ereditati 'membro1' e 'membro2' presentano la stessa firma nel tipo 'tipo', pertanto non possono essere sottoposti a override.
The inherited members 'member1' and 'member2' have the same signature in type 'type', so they cannot be overridden

Questo errore risulta dall'introduzione di generics. In genere, in una classe non possono esistere due versioni di un metodo con la stessa firma. Con l'introduzione di generics, invece, è possibile specificare un metodo generico in grado di duplicare un altro metodo se ne viene creata un'istanza con un tipo specifico.

Esempio

Quando viene creata un'istanza di C<int>, vengono generate due versioni del metodo F con la stessa firma. Di conseguenza, l'override nella classe D non è in grado di determinare la versione su cui operare.

Il seguente codice di esempio genera l'errore 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
}