In einer anderen StackExchange-Frage habe ich festgestellt, dass jemand diesen Prototyp verwendet:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
Wenn man bedenkt, dass es nur eine einzige Typbeschränkung gibt ( SomeSpecificReferenceType
), was ist der Unterschied und der Vorteil, wenn man es so schreibt, anstatt einfach:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
In beiden Fällen arg
wird eine Typprüfung zur Kompilierungszeit durchgeführt. In beiden Fällen kann sich der Hauptteil der Methode sicher auf Wissen stützen, das zu arg
einem bestimmten Typ gehört (oder von diesem abstammt), der zum Zeitpunkt der Kompilierung bekannt ist.
Ist dies ein Fall, in dem ein übereifriger Entwickler zuerst etwas über Generika und dann über die normale Vererbung erfährt? Oder gibt es einen berechtigten Grund, warum eine Methodensignatur so geschrieben würde?