正如问题所说,我一直认为强类型列表是使用集合的更好的appraoch。然而,在与同事讨论之后,我想要得到比“因为我喜欢他们”更好的答案。任何人都可以解释a)每种方法的主要差异和利弊。
修改:类似于What advantage do you get with a collection over List(Of T) in .NET 2.0+
答案 0 :(得分:4)
基于泛型的强类型集合(包括列表)允许您进行编程,而无需检查从列表中检索的对象的类型。它使代码更清晰,因为您不必强制转换对象以使用它,并且您不必担心由于集合包含错误类型的对象而导致抛出异常的枚举器。当然,你也可以通过单元测试获得很多,但是使用泛型可以让编译器在编译时进行检查,而不必在运行时进行检查。这样效率更高。你仍然可以通过不恰当的方式来解决编译时错误,但是如果你没有经过适当的检查就可以得到你应得的东西。
答案 1 :(得分:2)
我想补充一点,tvanfosson的回复是,当你存储价值类型时,通用集合会更有效率。例如,List将占用更少的内存,并提供比您放入整数的ArrayList更快的访问。
如果绝对必须在集合中存储多种类型的对象,则可以像使用ArrayList一样使用List并进行转换。
除了向后兼容性之外,我无法想到使用旧式(即非通用)集合来支持泛型集合。