我们应该使用Generic Collection来提高安全性和性能吗?
答案 0 :(得分:5)
当然。你为什么不呢?比IMO更重要的是,通用API更具表现力。这通常适用于通用API,而不仅仅是集合。
编辑:只是澄清一下:
由于“它们是不同的实现”以及整个通用/非通用方面的原因,通用和非通用集合之间的性能特征略有不同。显然,通用版本避免了装箱/拆箱和(在大多数使用情况下)获取时的执行时间。在实践中,这对于拳击发挥作用的价值类型来说可能很重要。对于大型集合,它的内存使用量差异可能比执行 speed 差异更大。
我对实际的类型安全方面感到不安。这当然是一件好事,但我记不起在使用非通用集合时实际上看到了一个错误,因为它输入了错误的类型(或者将其作为错误的类型获取)。这当然是一个好处。
我将表现力视为非常重要。我可以看一下方法的声明并知道返回值会有什么期望 - 我不需要非常仔细地阅读文档,或者给变量提供非常笨拙的名称或文档。此外,您还可以获得Intellisense等的所有好处。关于语言的一个问题是“我能在其中表达什么?”和泛型允许表达比以前更丰富的概念。
答案 1 :(得分:2)
绝对
传统集合(如ArrayList)隐式存储对象。
这意味着,这样做:
ArrayList list = new ArrayList();
list.Add(5);
list.Add("FooBar");
是合法代码。这引入了一些问题。
但是,您通过使用通用集合消除了所有这些问题:
List<int> list = new List();
list.Add(5);
// Compile Time Error.
list.Add("FooBar")
在直接使用集合的索引时,您也可以获得智能感知支持,而不仅仅是通用的“对象”智能感知。
答案 2 :(得分:1)
简答:是的
更长的答案:使用通用集合确实没有缺点。编译时类型检查消除了转换时运行时错误的可能性。内置类型(如整数)的性能会更高,因为不需要装箱和拆箱(顺便提一下,与Java通用集合相比)