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实际
关于它们的功能,我相信每个人都会同意说列表是最好的,所以我的问题不是这个。考虑问题是关于框架4的项目,所以两者都可以使用。< P>在性能和效率方面,它们将非常相似。p>
List
实际上可能会快一点。它有点像前泛型ArrayList的包装器。没有装箱/拆箱,但引擎盖下还有一两步,IIRC
StringCollection在.NET2.0之前很方便,因为它是强类型的字符串,这是需要一个字符串列表的常见情况。不过我建议现在就使用List
。由于大多数框架和第三方程序集将使用它而不是StringCollection,这将:
- 避免大量铸造
- 避免一些混乱。其他(尤其是较新的)开发人员会不断地想知道您使用StringCollection的原因是什么
- 我个人更喜欢使用
列表
:
- 不需要只为字符串记住一种特定类型
- 它实现了通用的
,而不仅仅是IEnumerable
,因此支持LINQIEnumerable
- 它由SilverLight支持
- 对于大多数开发人员来说,它更为惯用(IMO)
StringCollection
比List
快得多-看看你能不能用数字来证明这一点。我犹豫不决的唯一原因是,GridView
可能有对StringCollection
的硬编码支持,以加快该类型的速度,但对我来说,这听起来不太可能。List
不是ArrayList
的包装器
这是
ArrayList
的一个新实现,它通过一个数组(当count
大于其长度时,该数组的大小将调整为两倍)和一个count
属性来实现。Woe,没错!StringCollection不可能是数不清的。巨大的因素。是的,扔掉StringCollection。关于速度问题,我注意到它变化很大,有时候StringCollection更快,有时候正好相反。但是记忆呢?列表在内存中的位置是否比StringCollection更重要?@GianT971如果您使用IlSpy查看StringCollection
代码,您会发现StringCollection
是ArrayList
的一个垫片,它提供了一些强类型方法来添加、删除。。。现在,考虑到ArrayList
和List
使用相同的增长算法(*每次使用2个旧大小),在速度或内存大小上应该没有任何有意义的差异。