In una domanda StackExchange diversa, ho notato qualcuno che utilizza questo prototipo:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
Tenendo presente che esiste un solo tipo di vincolo ( SomeSpecificReferenceType
), qual è la differenza e il vantaggio di scriverlo in questo modo, anziché semplicemente:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
In entrambi i casi, arg
sarà soggetto al controllo del tipo in fase di compilazione. In entrambi i casi, il corpo del metodo può fare affidamento in modo sicuro sulla conoscenza che arg
è (o è un discendente di) un tipo specifico che è noto al momento della compilazione.
È questo il caso di uno sviluppatore troppo zelante che impara a conoscere i generici prima di imparare l'eredità ordinaria? Oppure esiste un motivo legittimo per cui una firma del metodo verrebbe scritta in questo modo?