У іншому запитанні StackExchange я помітив, хто використовує цей прототип:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
Маючи на увазі, є лише обмеження одного типу ( SomeSpecificReferenceType
), яка різниця і перевага писати це так, а не просто:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
В обох випадках arg
буде підлягати перевірка типу компіляції за часом. В обох випадках тіло методу може спокійно покладатися на знання, що arg
є (або є нащадком) конкретного типу, що відомо під час компіляції.
Це випадок надмірного розробника, який вивчає генеричні засоби, перш ніж дізнатися про звичайне успадкування? Або є законна причина, чому підпис методу був би написаний таким чином?