可能重复:
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