【发布时间】:2010-04-15 03:47:01
【问题描述】:
这是this question的扩展,甚至可能是其他问题的重复(如果是,请原谅我)。我see from 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());
}
}
而“An Animal of type Dog”将是
Animal<Dog> magic = new Animal<Dog>();
完全有可能让Dog 从Animal 继承(假设Animal 的非泛型版本)Dog:Animal 因此Dog 是一个 Animal
我想到的另一个例子是BankAccount。可以是BankAccount<Checking>,BankAccount<Savings>。这很可能是Checking:BankAccount 和Savings:BankAccount。
是否有任何最佳实践来确定我们应该使用泛型还是继承?
【问题讨论】:
-
在需要扩展类时使用继承。在您的示例中,您将 Animal 作为泛型,也就是说,它可以是您分配给它的任何类型。泛型为您的程序提供了一种使用通用接口执行操作的方法。
标签: c# .net generics inheritance