string[]数组里面是存放string型的值,List<string>是存放string类型的对象

解决方案 »

  1.   

    string 和String差别也没多大,对应string的值和对象来说应该也没多大差别吧
      

  2.   

    这个摘自网上:
    数组的容量是固定的,您只能一次获取或设置一个元素的值,而List<T>的容量可根据需要自动扩充、修改、删除或插入数据。
        数组可以具有多个维度,而 List< T> 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于List的性能。 这是因为 List的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List< T> 的性能与同类型的数组十分相近。
      

  3.   

    string 就是String...
    string[]是 数组,定长,不可变
    List<string> 是泛型 ,非定长,可变
      

  4.   

    string[]是数组,对于C#来说,数组是一个内置的特殊类型,有一些内在的特殊处理
    List<string> 是泛型集合,如果你愿意,甚至可以自己写一个一模一样的类型。
      

  5.   

    [] 感觉像python里面的元组
    List 感觉像python里面的列表
      

  6.   

    作用是一样的,但灵活性不同。string[]是定长的,不容易实现容量增长、中间插入一个字符串这样的操作,List<string>则可以方便实现。如果你能确定字符串数组长度,而且可以逐项填充的话,建议用string[]。如果不能确定数组长度,或者在计算值时需要不断向中间插入一个字符串,可以使用List<string>,生成完成后再用ToArray()方法转换为string[],string[]也可以通过List的AddRange方法添加到List<string>。
      

  7.   

    string[]只能存放string格式数据 而且一般的是固定大小长度的
    而List<>存放一个实体类可以使string,int或者自定义的
    List<string> list=new List<string>();
    string为你想要的对象,里面可以有属性,方法等,这就是面向对象。
    而String[]只是存放值而已,不是对象
      

  8.   

    数组是定长的,list集合是变长的
      

  9.   


    有什么不对可以指出来,何必言辞激进,有点素质行不,CSDN就是你们这些人整的
      

  10.   

    区别是长度是否可变,List<string> 内部也是 string[]
    只是它能自动扩容。
      

  11.   

    楼主的问题其实是:数组与List<>的区别
      

  12.   

    好吧,主要是针对楼上的,冒犯了,抱歉。
    因为string是引用类型,所以string[]和List<string>存储的都是string对象的引用(其实list内部也就是用数组实现的)。
      

  13.   

    CSDN就是半瓶水太多,总出来误导别人,导致作为一个技术论坛,CSDN的水平太低了
      

  14.   

    1:数组是定长,list是自动增长。
    2:数组效率高,list效率低。
    总结:数组牺牲功能增加效率,list牺牲效率增加功能。
      

  15.   

    淡定些,我上面说了它们应用上的区别,一开始我也觉着两者区别值和对象是没有意义的,但看了他们的说法,觉着还真有些不同,如:
    string[] a = new string[100];
    // 初始化赋值
    string x = a[2];
    x = "...";List<string> a = new List<string>();
    // 初始化赋值
    string x = a[2];
    x = "....";
    两种情况你测试一下a[2]的值是否会改变。第一中情况肯定不会变,我觉得第二中情况会变,我没测试,你自己测下吧。
      

  16.   


    string[]数组里面是存放string型的值。int[]数组,也可以表述为存放的是int型的值, 你能指出哪里有问题吗?List<string>是存放string类型的对象。请注意他强调了对象,就好像List<obj>里面存放的都是obj对象。你又能说这有什么错误吗?楼上这样的说法,无非是为了让新人可以加深理解,浅显易懂。而你非要吹毛求疵。楼主提出的问题 是希望听听大家的归纳总结,而不是“放屁”。
      

  17.   

    不是我吹毛求疵,是你明显的有错好吧。
    int[]数组存储的是int型的值没错,因为int是值类型。但是,string是引用类型,string[]存储当然是string对象的引用,而不是string对象的值(或许string的不可变性,让你认为string也是值类型了吧)。同理,list也是一样的,因为list内部是用数组使用的,不相信的话,自己反编译看看吧
      

  18.   

    有这么多人不知道string的不可变性吗?这应该是最基础的东西吧
      

  19.   

    List<string> string[] 只是用string 来举例子,楼主并不是想跟你讨论string的特性好吧 我承认 你懂的多,我是半吊子
      

  20.   

    LZ不明白数组与List的区别?自己MSDN一下吧。
      

  21.   

    你的基础太差了啊。string无论在哪里,都是引用类型的,不可能变为值类型。int[]和List<int>里面都是存放的int类型的值,而不是说List<int>就存放了obj对象,不然就失去了泛型集合的意义了。
    数组和List列表的唯一区别只有可扩容性。而事实上List<T>内部有个私有的T[]数组,当容量不足是自动扩容,创建新的T[]数组,旧的T[]数组内容复制过去。因此看似一个很方便使用的List<T>,如果定义的时候不给定一个合适的容量,使用的时候会影响性能,特别是数据量很大的时候。
      

  22.   

    关于耗时的问题  
    是编译时耗时 还是运行时耗时
    List<int>存放obj对象
      

  23.   

    又是一个不懂乱说的,我37楼都解释得很清楚了,还蹦出个“List<int>存放obj对象”这样的错误谬论。另外Ivy_zheng你在27楼的举例很不恰当,只能说明你也不懂如何修改数组内的元素。要修改数组内的元素,必须直接“T[0]=XXX”这样赋值,不论是引用类型还是值类型都必须这样,你却用一个局部变量存储数组内元素,对局部变量重新赋值。
      

  24.   


    在.NET里一切都是对象,都是Obj对象
      

  25.   

    为何这么般纠结呢?大伙。
    就像各位大侠说的,一个定长,一个动态。
    只要用在合适地方就done了。
    如果你需要存放的参值或者其他确定的,那么就用string[],else就用List<string>。
    如果你存放的是需要动态修改(增删改查)的,就用List<string>最好。但是string[]鄙人觉得可以完成该功能,只是需要转换思维便是了。
    个人point,不代表真理。经供参考,请多多指教。
      

  26.   

    ArrayList才是存放Object对象的,这里有List<T>的详细说明:http://msdn.microsoft.com/zh-cn/library/6sh2ey19.aspx,自己看后面的备注部分。
      

  27.   

    好多大神
    用起来其实很简单,定长的你就用数组,不定长的就用list
    但是数组效率高,list会牺牲效率。
      

  28.   

    string[]固定长度,list<string>不固定长度
      

  29.   

    与java的不一样吗?
    Sring[]不是固定长度。