小编典典

数组与列表: 什么时候用哪个?

all

MyClass[] array;
List list;

一种比另一种更可取的情况是什么?为什么?


阅读 113

收藏
2022-03-03

共1个答案

小编典典

实际上,您很少会想要使用数组。绝对在List<T>您想添加/删除数据的任何时候使用,因为调整数组大小很昂贵。
如果您知道数据是固定长度的,并且出于某些非常具体 的原因(在基准测试之后)想要进行微优化,那么数组可能会很有用。

List<T>提供 数组更多的功能(尽管 LINQ 稍微平衡了一点),而且几乎总是正确的选择。params当然,争论除外。;-p

作为计数器 -List<T>是一维的;where-因为您有矩形(等)数组,例如int[,]or string[,,]-
但是还有其他方法可以在对象模型中对此类数据(如果需要)进行建模。

也就是说,我在我的protobuf-net项目中 大量
使用了数组;完全出于性能:

  • 它做了很多位移,所以 abyte[]对于编码非常重要;
  • 我使用本地滚动byte[]缓冲区,然后再发送到底层流(和 vv);比BufferedStream等快;
  • 它在内部使用基于数组的对象模型(Foo[]而不是List<Foo>),因为一旦构建大小就固定了,并且需要非常快。

但这绝对是个例外;对于一般业务线处理,List<T>每次都赢。

2022-03-03