Esta es una extensión de this question y probablemente incluso sea un duplicado de alguna otra pregunta (Si es así, por favor perdóneme). Me see from MSDN que los genéricos se utilizan por lo general con coleccionesGenerics vs inheritance (cuando no hay clases de colección involucradas)
El uso más común para genéricos clases es con colecciones como listas enlazadas, tablas hash, pilas, colas, árboles y así sucesivamente, donde operaciones tales como la adición y la eliminación de elementos de la colección es realizada de la misma manera independientemente del tipo de datos que están almacenados.
Los ejemplos que he visto también validan la declaración anterior.
¿Alguien puede dar un uso válido de genéricos en un escenario de la vida real que no involucre ninguna colección?
pedante, yo estaba pensando en hacer un ejemplo que no implica colecciones
public class Animal<T>
{
public void Speak()
{
Console.WriteLine("I am an Animal and my type is " + typeof(T).ToString());
}
public void Eat()
{
//Eat food
}
}
public class Dog
{
public void WhoAmI()
{
Console.WriteLine(this.GetType().ToString());
}
}
y "Un animal de tipo perro" será
Animal<Dog> magic = new Animal<Dog>();
Es totalmente posible tener Dog
siendo heredado de Animal
(asumiendo una versión no genérica de Animal
) Dog:Animal
Por lo tanto Dog
es unAnimal
Otro ejemplo que estaba pensando era un BankAccount
. Puede ser BankAccount<Checking>
, BankAccount<Savings>
. Esto puede ser Checking:BankAccount
y Savings:BankAccount
.
¿Existen mejores prácticas para determinar si deberíamos ir con genéricos o con herencia?
utilizar la herencia cuando cada vez que necesita extender una clase. En su ejemplo, tiene Animal como genérico, es decir, puede ser del tipo que lo asigne. Los genéricos proporcionan a su programa una forma de utilizar una interfaz común para realizar operaciones. – Kaili