En una pregunta diferente de StackExchange, noté que alguien usaba este prototipo:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
Teniendo en cuenta que solo hay una restricción de tipo único ( SomeSpecificReferenceType
), cuál es la diferencia y la ventaja de escribirlo así, en lugar de simplemente:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
En ambos casos, arg
estará sujeto a verificación de tipo en tiempo de compilación. En ambos casos, el cuerpo del método puede confiar con seguridad en el conocimiento que arg
es (o es descendiente de) un tipo específico que se conoce en tiempo de compilación.
¿Es este el caso de un desarrollador entusiasta que aprende sobre genéricos antes de aprender sobre la herencia ordinaria? ¿O hay una razón legítima por la cual una firma de método se escribiría de esta manera?