MyClass[]数组;
列表<;MyClass>;列表
当一种情况优于另一种情况时,会出现什么情况?为什么
实际上,很少有人希望使用数组。一定要使用列表<;T>任何时候添加/删除数据,因为调整数组的大小非常昂贵。如果您知道数据是固定长度的,并且您希望针对一些非常具体的原因(在基准测试之后)进行微观优化,那么阵列可能会很有用
列表<;T>提供了比数组更多的功能(尽管LINQ会使它变得更均匀),而且几乎总是正确的选择。当然,除了params参数之外-p
作为计数器-列表<;T>是一维的;其中有矩形(etc)数组,如int[,]或string[,,]——但在对象模型中有其他方法建模此类数据(如果需要)
另见:
- 如何/何时放弃在c#net中使用数组
- 阵列,有什么意义
也就是说,我在protobuf-net项目中大量使用了数组;完全为了性能:
- 它会进行大量的位移位,因此
字节[]对于编码来说非常重要 - 我使用一个本地滚动
byte[]缓冲区,在发送到底层流(和v.v.)之前填充该缓冲区;快于缓冲流等 - 它在内部使用基于数组的对象模型(
Foo[]而不是List<;Foo>;),因为构建后大小是固定的,并且需要非常快
但这绝对是个例外;对于一般业务线处理,aList<;T>每次都赢