日期:2014-05-17  浏览次数:21405 次

string[]和List<string>有什么区别
同为存放string的数组,他们有什么区别?

------解决方案--------------------
这个摘自网上:
数组的容量是固定的,您只能一次获取或设置一个元素的值,而List<T>的容量可根据需要自动扩充、修改、删除或插入数据。
    数组可以具有多个维度,而 List< T> 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于List的性能。 这是因为 List的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List< T> 的性能与同类型的数组十分相近。
------解决方案--------------------
string 就是String...
string[]是 数组,定长,不可变
List<string> 是泛型 ,非定长,可变
------解决方案--------------------
作用是一样的,但灵活性不同。string[]是定长的,不容易实现容量增长、中间插入一个字符串这样的操作,List<string>则可以方便实现。如果你能确定字符串数组长度,而且可以逐项填充的话,建议用string[]。如果不能确定数组长度,或者在计算值时需要不断向中间插入一个字符串,可以使用List<string>,生成完成后再用ToArray()方法转换为string[],string[]也可以通过List的AddRange方法添加到List<string>。
------解决方案--------------------
string[]只能存放string格式数据 而且一般的是固定大小长度的
而List<>存放一个实体类可以使string,int或者自定义的
List<string> list=new List<string>();
string为你想要的对象,里面可以有属性,方法等,这就是面向对象。
而String[]只是存放值而已,不是对象

------解决方案--------------------
区别是长度是否可变,List<string> 内部也是 string[]
只是它能自动扩容。
------解决方案--------------------
技术论坛最好对自己说的话负责,而不是随口就胡扯。
因为你的胡扯就可能会误导别人,从而影响更多的人。
不确定的事情可以说,但是最好说明自己不是很懂,或者不确定。免得别人看了还以为是什么正确的结论而记住。

------解决方案--------------------
1:数组是定长,list是自动增长。
2:数组效率高,list效率低。
总结:数组牺牲功能增加效率,list牺牲效率增加功能。
------解决方案--------------------
引用:
string[]数组里面是存放string型的值。int[]数组,也可以表述为存放的是int型的值, 你能指出哪里有问题吗?

List<string>是存放string类型的对象。请注意他强调了对象,就好像List<obj>里面存放的都是obj对象。你又能说这有什么错误吗?

你的基础太差了啊。string无论在哪里,都是引用类型的,不可能变为值类型。int[]和List<int>里面都是存放的int类型的值,而不是说List<int>就存放了obj对象,不然就失去了泛型集合的意义了。
数组和List列表的唯一区别只有可扩容性。而事实上List<T>内部有个私有的T[]数组,当容量不足是自动扩容,创建新的T[]数组,旧的T[]数组内容复制过去。因此看似一个很方便使用的List<T>,如果定义的时候不给定一个合适的容量,使用的时候会影响性能,特别是数据量很大的时候。
------解决方案--------------------
为何这么般纠结呢?大伙。
就像各位大侠说的,一个定长,一个动态。
只要用在合适地方就done了。
如果你需要存放的参值或者其他确定的,那么就用string[],else就用List<string>。
如果你存放的是需要动态修改(增删改查)的,就用List<string>最好。但是string[]鄙人觉得可以完成该功能,只是需要转换思维便是了。
个人point,不代表真理。经供参考,请多多指教。