使用String []而不是List <string>?</string>有什么好处

时间:2010-05-20 17:26:53

标签: c# .net arrays list collections

  

可能重复:
  c# array vs generic list
  Array versus List<T>: When to use which?

我了解使用List&lt;&gt;有几个好处。但是,我想知道使用数组可能会有什么好处。

感谢。

5 个答案:

答案 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在内部使用数组,只管理列表在内部为你做的所有事情。