可能重复:
c# array vs generic list
Array versus List<T>: When to use which?
我了解使用List&lt;&gt;有几个好处。但是,我想知道使用数组可能会有什么好处。
感谢。
答案 0 :(得分:5)
您将拥有一个简单的静态结构来保存项目,而不是与List相关的开销(动态大小调整,插入逻辑等)。
在大多数情况下,列表的灵活性和适应性超过了这些好处。
答案 1 :(得分:4)
数组在列表中有一个是covariance。
class Person { /* ... */}
class Employee : Person {/* ... */}
void DoStuff(List<Person> people) {/* ... */}
void DoStuff(Person[] people) {/* ... */}
void Blarg()
{
List<Employee> employeeList = new List<Employee>();
// ...
DoStuff(employeeList); // this does not compile
int employeeCount = 10;
Employee[] employeeArray = new Employee[employeeCount];
// ...
DoStuff(employeeArray); // this compiles
}
答案 2 :(得分:2)
数组比List更简单,因此开销更少。如果您只需要数组的功能,则没有理由使用List。
数组是最简单的集合形式,大多数其他集合以某种形式使用。 List实际上在内部使用一个数组来保存它的项目。
每当语言构造需要轻量级一次性抛弃集合时,它就会使用一个数组。例如这段代码:
string s = "Age = " + age.ToString() + ", sex = " + sex + ", location = " + location;
实际上变成了幕后的代码:
string s = String.Concat(new string[] {
"Age = ",
age.ToString(),
", sex = ",
sex,
", location = ",
location
});
答案 3 :(得分:1)
如果你的集合是不可变的,我只会使用数组。
编辑:不可变,从某种意义上说,您的收藏品不会增长或缩小。
答案 4 :(得分:0)
速度将是主要的好处,除非你开始编写自己的代码来插入/删除项目等。
List在内部使用数组,只管理列表在内部为你做的所有事情。