Это расширение этого вопроса и, возможно, может даже быть дубликатом какого-либо другого вопроса (если так, пожалуйста, прости меня). Я вижу из MSDN , что дженерики обычно используются с коллекциями
Наиболее распространенное использование для универсального
классы с коллекциями, как
связанные списки, хеш-таблицы, стеки,
очереди, деревья и так далее, где
такие операции, как добавление и удаление
предметы из коллекции
выполняется примерно так же
независимо от типа данных
сохраняется.
Примеры, которые я видел, также подтверждают вышеприведенное утверждение.
Может ли кто-нибудь дать правильное использование обобщений в сценарии реальной жизни, который не включает какие-либо коллекции?
Педантично, я думал о создании примера, который не включает коллекции
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());
}
}
и «Животное типа Собака» будет
Animal<Dog> magic = new Animal<Dog>();
Вполне возможно, что Dog
будет наследоваться от Animal
(при условии, что не универсальная версия Animal
) Dog:Animal
Следовательно, Dog
является Animal
Другим примером, о котором я думал, был BankAccount
. Это может быть BankAccount<Checking>
, BankAccount<Savings>
. Это вполне может быть Checking:BankAccount
и Savings:BankAccount
.
Существуют ли передовые практики, чтобы определить, следует ли нам использовать дженерики или наследование?