【发布时间】:2010-10-28 07:37:40
【问题描述】:
我正在阅读 SO 上关于泛型的现有帖子。如果泛型有很多优点,比如类型安全,没有装箱/拆箱的开销,而且速度很快,为什么不总是使用它呢?为什么你会改用非泛型对象?
已编辑(问题在下面进一步扩展)
我有点困惑。上一次读泛型是几个月前,读到如果参数中的类型是可变的,应该使用泛型以防止错误。不过,我现在似乎正在阅读的是,泛型将实现限制为固定类型,而非泛型对象允许您在运行时定义参数类型。
请帮我看看我错过了什么?
其次,当您在一个团队中工作并且您的代码是可共享的时,在适当的 OOP 设计(泛型等)中使用这些类型的构造很有帮助。对于一个单独的小规模程序员来说,谁知道参数中必须包含什么类型,似乎没有必要担心,使用泛型或非泛型类型之间几乎没有区别。这准确吗?
【问题讨论】:
-
重新编辑:“非通用事物允许在运行时定义参数类型。” - 不,没有要定义的参数。如果有的话,那句话就是反语; 非泛型但类型化参数将您限制为一个类型,其中-作为泛型参数让调用者选择-因此泛型具有优势那里。否则,您主要限于
object -
关于团队与个人的观点;我根本看不出有什么不同的原因。除非你故意让你的方法不那么清晰?如果是这样,您也可以将它们全部重命名为
void A(object a, object b, object c)。更好的看待它的方法很简单:这种方法是否适用于特定类型,或者相同的逻辑是否可以用于任意类型?如果是后者,泛型是一个不错的选择。