C# 性能问题:StringCollection vs List<;字符串>;

C# 性能问题:StringCollection vs List<;字符串>;,c#,performance,list,.net-4.0,stringcollection,C#,Performance,List,.net 4.0,Stringcollection,我想知道什么时候应该使用列表以及什么时候应该使用StringCollection 假设我必须处理大量字符串(比如10mb的文本文件) 我知道列表提供的功能比 StringCollection 但有时我会发现列表有点慢,比如告诉Gridview它的数据源是一个列表 那么有人知道这些系列在速度和内存重量方面的优缺点吗? 关于它们的功能,我相信每个人都会同意说列表是最好的,所以我的问题不是这个。考虑问题是关于框架4的项目,所以两者都可以使用。< P>在性能和效率方面,它们将非常相似。p> List实际

我想知道什么时候应该使用列表以及什么时候应该使用StringCollection

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

我知道列表提供的功能比 StringCollection

但有时我会发现列表有点慢,比如告诉Gridview它的数据源是一个列表

那么有人知道这些系列在速度和内存重量方面的优缺点吗?


关于它们的功能,我相信每个人都会同意说列表是最好的,所以我的问题不是这个。考虑问题是关于框架4的项目,所以两者都可以使用。

< P>在性能和效率方面,它们将非常相似。p>
List
实际上可能会快一点。它有点像前泛型ArrayList的包装器。没有装箱/拆箱,但引擎盖下还有一两步,IIRC

StringCollection在.NET2.0之前很方便,因为它是强类型的字符串,这是需要一个字符串列表的常见情况。不过我建议现在就使用
List
。由于大多数框架和第三方程序集将使用它而不是StringCollection,这将:

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

    • 我个人更喜欢使用
      列表

      • 不需要只为字符串记住一种特定类型
      • 它实现了通用的
        IEnumerable
        ,而不仅仅是
        IEnumerable
        ,因此支持LINQ
      • 它由SilverLight支持
      • 对于大多数开发人员来说,它更为惯用(IMO)
      我会非常惊讶地发现
      StringCollection
      List
      快得多-看看你能不能用数字来证明这一点。我犹豫不决的唯一原因是,
      GridView
      可能有对
      StringCollection
      的硬编码支持,以加快该类型的速度,但对我来说,这听起来不太可能。

      List
      不是
      ArrayList
      的包装器


      这是
      ArrayList
      的一个新实现,它通过一个数组(当
      count
      大于其长度时,该数组的大小将调整为两倍)和一个
      count
      属性来实现。

      Woe,没错!StringCollection不可能是数不清的。巨大的因素。是的,扔掉StringCollection。关于速度问题,我注意到它变化很大,有时候StringCollection更快,有时候正好相反。但是记忆呢?列表在内存中的位置是否比StringCollection更重要?@GianT971如果您使用IlSpy查看
      StringCollection
      代码,您会发现
      StringCollection
      ArrayList
      的一个垫片,它提供了一些强类型方法来添加、删除。。。现在,考虑到
      ArrayList
      List
      使用相同的增长算法(*每次使用2个旧大小),在速度或内存大小上应该没有任何有意义的差异。