我在MSDN上听说数组比集合更快。
你能告诉我为什么string[]
比List<string>
快吗?
数组是比诸如列表之类的集合更低级别的抽象。CLR 直接知道数组,因此在迭代、访问等方面需要进行的工作略微减少。
然而,这几乎永远不应该决定你实际使用哪一个。在大多数实际应用中,性能差异将是可以忽略不计的。我很少发现使用数组而不是各种通用的集合类是合适的,事实上有些人认为数组有点有害。一个显著的缺点是,除了空数组之外,没有不可变的数组……而可以相对容易地通过 API 公开只读集合。
数组是最简单的集合形式,因此比其他集合更快。列表(以及许多其他集合)实际上在内部使用数组来保存其项。
当然,数组也受其简单性的限制。最显著的是,您无法更改数组的大小。如果您想要一个动态集合,可以使用列表。
List<string>
是一个类,其中包含一个私有成员string[]
。MSDN文档在多个地方都说明了这一点。List类基本上是数组的包装器,为数组提供了其他功能。