可能重複:
c# array vs generic list
Array versus List<T>: When to use which?使用String []優於列表<String>有什麼好處?
據我所知,有使用列表<>的若干好處。但是,我想知道使用數組還有什麼好處。
謝謝。
可能重複:
c# array vs generic list
Array versus List<T>: When to use which?使用String []優於列表<String>有什麼好處?
據我所知,有使用列表<>的若干好處。但是,我想知道使用數組還有什麼好處。
謝謝。
我只會使用一個數組,如果你的集合是不可變的。
編輯:不可變的從某種意義上說,您的收藏不會增長或縮小。
數組不提供不可變集合。數組中任何元素的值都可以使用索引進行修改。 – AlwaysAProgrammer 2010-05-20 17:31:46
@Yogendra我認爲你在發佈時錯過了我的編輯。 – someguy 2010-05-20 17:40:29
是的,我認爲:)。 – AlwaysAProgrammer 2010-05-20 18:53:37
您將擁有一個簡單的靜態結構來保存項目,而不是與List關聯的開銷(動態調整大小,插入邏輯等)。
但是在大多數情況下,這些好處超過了列表的靈活性和適應性。
數組比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
});
速度將是主要的好處,除非你開始編寫自己的代碼中插入/刪除項目等
List在內部使用一個數組,只是在內部管理一個列表爲你做的所有事情。
有一個數組超過列表是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
}
我相信其他兩個問題不能解決我的問題。我正在尋找使用數組的原因。這些問題似乎主張使用列表廣泛知道的好處,而我正在尋求使用數組的原因。 – Jones 2010-05-20 17:32:23
不是很血腥。 – Will 2010-05-20 17:53:48