性能问题:StringCollection与List <string> </string>

时间:2011-10-14 22:50:08

标签: c# performance list .net-4.0 stringcollection

我想知道何时应该使用 List&lt;字符串&gt; ,当我应该使用 StringCollection

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

  

我知道 列表&lt; T&gt; 提供比功能更强大的功能   的 StringCollection

但有时我会找到List&lt; T> ,例如告诉Gridview其数据源是List&lt;字符串&gt; ...

  

所以有人知道这些收藏品的优缺点,关于记忆的速度和重量吗?

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

3 个答案:

答案 0 :(得分:49)

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

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

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

答案 1 :(得分:23)

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

List<string>实际上可能会快一点。它是预先通用的ArrayList的包装器。没有拳击/拆箱,但是还有一两个额外的一步,IIRC。

StringCollection在.NET 2.0之前很方便,因为它强烈地键入字符串,非常常见的想要列表。我建议现在使用List<string>。由于大多数框架和第三方程序集将使用它而不是StringCollection,因此:

  • 避免大量施法
  • 避免一些混乱。其他(特别是较新的)开发人员会不断地想知道你使用StringCollection的原因是什么。

答案 2 :(得分:5)

列表与LT;串GT;不是ArrayList的包装器。它是ArrayList的一个新实现,它通过一个数组(当Count大于它的长度时调整为double大小)和Count属性来实现。