Dans une autre question StackExchange, j'ai remarqué quelqu'un utilisant ce prototype:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
En gardant à l'esprit qu'il n'y a qu'une seule contrainte de type ( SomeSpecificReferenceType
), quelle est la différence et l'avantage de l'écrire comme ça, au lieu de simplement:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
Dans les deux cas, arg
sera soumis à une vérification de type au moment de la compilation. Dans les deux cas, le corps de la méthode peut s'appuyer en toute sécurité sur des connaissances qui arg
sont (ou qui sont des descendants) d'un type spécifique connu au moment de la compilation.
Est-ce le cas d'un développeur trop zélé qui apprend les génériques avant d'apprendre l'héritage ordinaire? Ou existe-t-il une raison légitime pour qu'une signature de méthode soit écrite de cette façon?