2010-05-20 68 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 
    }