В другом вопросе StackExchange я заметил, что кто-то использует этот прототип:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
Принимая во внимание, что есть только один тип ограничений ( SomeSpecificReferenceType
), в чем разница и преимущество такого написания, а не просто:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
В обоих случаях arg
будет проводиться проверка типов во время компиляции. В обоих случаях тело метода может безопасно полагаться на знания, arg
относящиеся (или являющиеся потомками) к конкретному типу, известному во время компиляции.
Является ли это случаем чрезмерно усердного разработчика, который изучает дженерики, прежде чем узнает об обычном наследовании? Или есть законная причина, почему подпись метода будет написана таким образом?