Die erste Methode können Sie Dinge wie typeof(T)
tun, die Sie nicht mit dem nicht-generischen Typ konnten, da das Objekt selbst Null sein kann (da Sie item.GetType()
aufrufen müssten).
Sie sind auch in der Lage den Rückgabetyp zu diktieren (wenn anstatt es nicht leer ist), etwa so:
public class Butter : Product { }
public class Egg : Product { }
public class Product { }
public T AddGeneric<T>(T item) where T : Product
{
//Do something
return item;
}
public Product Add(Product item)
{
//Do something
return item;
}
//Even though we know it's going to return an Egg, we still need to cast here
//If we want to treat t as an Egg, rather than as a Product
Product t = Add(new Egg());
//No cast needed
Egg tt = AddGeneric(new Egg());
Beachten Sie auch, dass eine generische Methode eine Methode pro Typen bei der Kompilierung erstellen (und zur Laufzeit beim Aufruf über Reflektion).
Sie können viel mehr Dinge mit Generika tun, aber ich denke, dass Sie hier kein Beispiel setzen müssen. –