2010-05-20 37 views
1

可能重复:
c# array vs generic list
Array versus List<T>: When to use which?使用String []优于列表<String>有什么好处?

据我所知,有使用列表<>的若干好处。但是,我想知道使用数组还有什么好处。

谢谢。

+0

我相信其他两个问题不能解决我的问题。我正在寻找使用数组的原因。这些问题似乎主张使用列表广泛知道的好处,而我正在寻求使用数组的原因。 – Jones 2010-05-20 17:32:23

+0

不是很血腥。 – Will 2010-05-20 17:53:48

回答

1

我只会使用一个数组,如果你的集合是不可变的。

编辑:不可变的从某种意义上说,您的收藏不会增长或缩小。

+0

数组不提供不可变集合。数组中任何元素的值都可以使用索引进行修改。 – AlwaysAProgrammer 2010-05-20 17:31:46

+0

@Yogendra我认为你在发布时错过了我的编辑。 – someguy 2010-05-20 17:40:29

+0

是的,我认为:)。 – AlwaysAProgrammer 2010-05-20 18:53:37

5

您将拥有一个简单的静态结构来保存项目,而不是与List关联的开销(动态调整大小,插入逻辑等)。

但是在大多数情况下,这些好处超过了列表的灵活性和适应性。

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 
}); 
0

速度将是主要的好处,除非你开始编写自己的代码中插入/删除项目等

List在内部使用一个数组,只是在内部管理一个列表为你做的所有事情。

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 
    } 
相关问题