我正在阅读有关仿制药的现有帖子.如果Generics有很多优点,如Type安全,没有装箱/拆箱的开销,而且速度很快,为什么不总是使用呢?为什么要使用非通用对象呢?
编辑(问题进一步扩展如下)
我有点困惑.几个月前我读到Generics的最后一次,我读到如果参数中的Type是可变的,那么应该使用Generic来防止错误.但我现在正在阅读的内容是,泛型将实现限制为固定类型,而非泛型对象允许您在运行时定义参数类型.
请帮我看看我错过了什么?
其次,在团队中工作并且代码可共享时,在适当的OOP设计(泛型等)中使用这些类型的构造会很有帮助.对于一个规模较小的独立程序员,谁知道Type必须参与哪个类型,似乎没有必要担心,使用Generic或Non-Generic类型之间差别不大.这准确吗?
Mar*_*ell 11
一般情况下你应该 - 但是,有时候(尤其是在编写库代码时),当不可能(或者当然不方便)知道调用类型(即使是T)时,所以非泛型类型(主要是接口等) as IList,IEnumerable)非常有用.数据绑定就是一个很好的例子.事实上,任何涉及反射的东西通常都会通过使用泛型变得更加困难,并且因为(通过反射的本质)你已经失去了这些好处,你可能只需要使用非泛型代码.反思与仿制药都不是很好的朋友,在所有.