摘自《.NET 2.0 模式开发实战》
无论什么时候使用泛型类型,泛型的特定版本总是动态产生的。如果泛型类型是通过3种不同的类型使用,那么3种不同版本都是动态创建的。这使得执行.NET应用程序时会有更多的应用需求。大小的变化可能忽略不计,也可能非常显著,这就要看不同类型的数量,以及一个泛型嵌入到另一个泛型类型中的频率。当然C#中不可能再遇到与C++模板同样的问题(每次实例化后代码会变大,并需要2MB的内存空间)。
在某些情况下,泛型反而把错误放大了,因为广泛的使用泛型的源代码是抽象的,需要一些思考才能弄清楚所定义的是什么。简单来说,假设开发一个抽象的架构,当实现抽象时,创建了另一个抽象,当实现抽象时,又创建了另一个抽象。使这些抽象一起工作,开发者需要为它们赋予正确的类。问题是对一个人来说很清楚的事情对另一个人来说不一定是也很清楚。因此,抽象的优势丧失了。相反,当编写一个类实现一个接口并引用另一个类时,你很容易知道其目的是什么。
对泛型不要害怕也不要否定。相反,我鼓励使用泛型,因为他们能更好的解决一些问题。但是要意识到,泛型是一种很强大的机制,应该谨慎对待,适当使用。