我想知道何时应该使用 List<字符串> ,当我应该使用 StringCollection 。
假设我必须处理大量字符串(例如10mb的文本文件)。
我知道 列表< T> 提供比功能更强大的功能 的 StringCollection
但有时我会找到List< T> 慢,例如告诉Gridview其数据源是List<字符串> ...
所以有人知道这些收藏品的优缺点,关于记忆的速度和重量吗?
关于它们的功能,我相信每个人都会同意说List是最好的,所以我的问题不在于此。考虑问题是关于Frameworks 4.0上的项目,因此两者都可以使用。
答案 0 :(得分:49)
我个人更喜欢使用List<string>
:
IEnumerable<T>
而不仅仅是IEnumerable
,因此支持LINQ 我会非常惊讶地发现StringCollection
明显快于List<string>
- 看看你是否可以用数字来支持它。我唯一犹豫的原因是GridView
可能会对StringCollection
提供硬编码支持以使其快速使用该类型 - 但这听起来不太可能。
答案 1 :(得分:23)
在性能和效率方面,它们将非常相似。
List<string>
实际上可能会快一点。它是预先通用的ArrayList的包装器。没有拳击/拆箱,但是还有一两个额外的一步,IIRC。
StringCollection在.NET 2.0之前很方便,因为它强烈地键入字符串,非常常见的想要列表。我建议现在使用List<string>
。由于大多数框架和第三方程序集将使用它而不是StringCollection,因此:
答案 2 :(得分:5)
列表与LT;串GT;不是ArrayList的包装器。它是ArrayList的一个新实现,它通过一个数组(当Count大于它的长度时调整为double大小)和Count属性来实现。