38

我想知道什么时候应该使用List< string >以及什么时候应该使用StringCollection

假设我必须处理大量字符串(例如 10mb 的文本文件)。

我知道List< T >提供了比 StringCollection更强大的功能。

但有时我会发现 List< T >很慢,例如告诉 Gridview 它的数据源是 List< String > ...

那么有谁知道这些集合的优缺点,关于内存的速度和重量?

关于它们的功能,我相信每个人都会同意说 List 是最好的,所以我的问题与此无关。考虑问题是关于 Frameworks 4.0 上的项目,所以两者都可以使用。

4

3 回答 3

52

我个人更喜欢使用List<string>

  • 无需为字符串记住一种特定类型
  • 它实现了泛型IEnumerable<T>而不是仅仅IEnumerable,因此支持 LINQ
  • SilverLight 支持它
  • 对于大多数开发人员(IMO)来说,它更惯用

我会很惊讶地发现StringCollection它明显快于List<string>- 看看你是否可以用数字来支持它。我犹豫的唯一原因是它GridView可能具有硬编码支持StringCollection以使其快速使用该类型 - 但这对我来说听起来不太可能。

于 2011-10-14T22:56:46.290 回答
26

在性能和效率方面,它们将非常相似。

List<string>实际上可能会快一点。它是一种围绕前通用 ArrayList 的包装器。没有装箱/拆箱,但在引擎盖下仍有一两个额外的步骤,IIRC。

StringCollection 在 .NET 2.0 之前很方便,因为它被强类型化为字符串,需要一个列表是很常见的事情。我建议List<string>现在使用。由于大多数框架和第 3 方程序集将使用它而不是 StringCollection,这将:

  • 避免大量铸造
  • 避免一些混乱。其他(尤其是较新的)开发人员会不断地想知道您使用 StringCollection 的原因是什么。
于 2011-10-14T22:54:34.203 回答
4

List<string>不是包装ArrayList

它是ArrayList通过具有一个数组(当它count变得大于其长度时将其调整为双倍大小)和一个count属性来实现的新实现。

于 2014-07-14T17:17:11.130 回答