Ho incontrato un problema con metodi di overload che hanno vincoli diversi che sembrano esclusivi. Questo è il mio esempio:Membro con la stessa firma già definita con diversi vincoli di tipo
public class A
{
public void Do<T>() where T : class
{
}
public void Do<T>() where T : struct
{
}
}
E questo non si compila con il seguente errore "Stati con la stessa firma già definito". È possibile soddisfare entrambe le condizioni contemporaneamente o è solo la limitazione del compilatore C#?
Almeno spero che era corretto dire che questi due vincoli sono esclusivi ed è solo la limitazione , destra? :) –
@IlyaChernomordik: È un limite, ma un IMO piuttosto ragionevole. –
Ma cosa c'è di sbagliato nel permettere questo? Devo solo fare diverse azioni a seconda che si tratti di una classe (posso verificare se è nulla) o quando è solo lunga (allora so che il valore è lì). Quindi la via d'uscita dovrebbe semplicemente dare nomi diversi ai metodi che sembra. Io sicuramente non voglio usare il modo orribile :) –