Em uma pergunta StackExchange diferente, notei alguém usando este protótipo:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
Tendo em mente que existe apenas uma restrição de tipo único ( SomeSpecificReferenceType
), qual é a diferença e a vantagem de escrevê-lo assim, em vez de simplesmente:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
Nos dois casos, arg
estará sujeito à verificação do tipo em tempo de compilação. Nos dois casos, o corpo do método pode confiar com segurança no conhecimento arg
de (ou descendente de) um tipo específico conhecido no momento da compilação.
É este o caso de um desenvolvedor superzeloz que aprende sobre genéricos antes de aprender sobre herança comum? Ou existe uma razão legítima para que uma assinatura de método seja escrita dessa maneira?