C# 中,列表比数组更好吗?

23 浏览
0 Comments

C# 中,列表比数组更好吗?

这个问题已经在这里有了答案:

可能是重复问题:

Array versus List: When to use which?

即:

// ex1
IList list
// ex2
string[] str

列表可以不带长度进行初始化,但当我需要读取它时,它是否与数组一样好?

而且,我能否将所有的 string[] 替换为 IList

数组做不到的事情有什么是列表可以做到的吗?

admin 更改状态以发布 2023年5月20日
0
0 Comments

在大多数情况下,List<> 更好。它更清晰,更易于使用和循环,具有许多有用的属性和方法,而且不像数组那样需要一个连续的内存块。它可以在需要时增长/缩小,你的代码将变得更易读。

在性能方面,在许多情况下,List<> 的性能可能会优于数组,尤其是如果你需要增长/缩小,但只有测量才能真正显示。而且实际上,这种类型的性能优化在今天已经不怎么需要了。

当你必须传递大块内存(例如字节数组)或需要进行互操作性(即,没有 Win32 API 可以理解 List)时,请使用数组。对于这些情况,请使用 List.ToArray() 来兼顾两者的优点。

在你必须在数组或列表中查找东西的情况下,使用 Dictionary 可能是更合适的选择,在几种情况下,它的速度非常快。

0
0 Comments

定义好的good!!

有性能问题吗?
这个性能问题能用数组代替列表解决吗?(取决于你的具体实现)
你想定位所有的.NET框架吗?
你定位任何不支持泛型列表/字典的显式.NET框架吗?
你需要与Win32进行互操作吗?
等等,等等...

为什么还要困扰于这个问题,直接使用ListDictionary,直到出现任何(性能)问题。
它使用起来更方便,提供了大量的属性/方法/扩展方法,微软在优化自己的数据结构方面做得很好!

提一下:
如果您担心这两种结构之间的互操作性,您可以使用System.Linq命名空间获得:

list.ToArray();
array.ToList();

0