MyClass[] array;
List<MyClass> list;

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

推荐答案

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

List<T>提供的功能比数组多lot个(尽管LINQ将其略微拉平),并且几乎总是正确的 Select .当然,除了params个论点.;-p

作为计数器-List<T>是一维的;这里有矩形(etc)数组,比如int[,]string[,,],但在对象模型中有其他方法来建模此类数据(如果需要).

另见:

也就是说,我在我的protobuf-net项目中使用了lot个数组;完全是为了性能:

  • 它会进行大量的位移位,所以byte[]对于编码来说非常重要;
  • 我使用一个本地滚动byte[]缓冲区,在发送到底层流(和v.v.)之前填充该缓冲区;快于BufferedStream等;
  • 它在内部使用基于数组的对象模型(Foo[]而不是List<Foo>),因为一旦构建,大小是固定的,并且需要非常快.

但这绝对是个例外;对于一般的业务线处理,每次List<T>美元获胜.

.net相关问答推荐

PowerShell中窗体定时器和系统定时器的统一处理

[x.x.x,)在Packages.lock.json依赖项中是什么意思?

在PowerShell中,XML子对象和属性是对象属性.它怎麽工作?

.NET 7.0中的UseHttpsRedirection和IIS生产部署

无法使用 int.Parse 从字符串转换值

线程安全性的单元测试?

将客户端证书添加到 .NET Core HttpClient

在目录中创建应用程序快捷方式

IIS Express - 500.19 无法读取配置文件 - 因为它正在查看错误的路径

OpenCV的.Net(dotNet)包装器?

[DllImport("QCall")] 是什么?

如何使用 NUnit(或可能使用另一个框架)测试异步方法?

在 C# 中转义命令行参数

将接收到的对象转换为 List 或 IEnumerable

获取 .NET 程序集的 AssemblyInformationalVersion 值?

什么是 .NET 应用程序域?

如何以编程方式删除 WebClient 中的 2 个连接限制

如何在 C# 中使用迭代器反向读取文本文件

WPF中的依赖属性和附加属性有什么区别?

如何从 webclient 获取状态码?