C# 数组还是字典?

标签 c# optimization data-structures arrays performance

我想知道 C# 数组是否具有恒定的访问速度?
我需要在静态数组中存储 1000 个项目,这些项目将在服务器启动期间进行初始化。该数组将只读使用, 所以数组不会有任何变化。
我应该改用简单的 C# 数组 (new MyClass[]) 还是字典。

我是 C# 的新手,正在尝试了解 C# 数组访问的工作原理。
它们可以在速度上与 C++ 数组进行比较吗?

最佳答案

最佳选择取决于您需要如何访问元素。

如果你想通过索引访问它们,那么使用数组。 C# 中的数组具有恒定的访问速度,并且在访问速度方面与 C++ 数组非常相似。

但是,字典的访问速度非常快(Item property 接近 O(1) 的访问时间,但取决于存储的键对 GetHashCode 的实现有多好)。如果您需要根据键值而不是索引来查找您的项目,那么字典将是合适的。

关于C# 数组还是字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2448974/

相关文章:

c# - 来自 C# 的 native 调用尝试读取无效内存

algorithm - 确定是否有超过一半的数组在不同的数组中重复

c# - 如何禁用在选择任何单元格时停止计算的 Excel 2010 功能/错误?

c# - 使用 Ninject 自定义 OptionalAttribute

c# - 在一个字符串方法中修剪和填充

python - 列出 N 以下所有素数的最快方法

android - OpenCV:光流计算优化

c++ - c/c++ 编译器是否通过二次幂值将常量除法优化为移位?

data-structures - 使用 F# 联合查找

java - 来自用字段值初始化的数组的 ArrayIndexOutOfBoundsException