ArrayList为什么是过时的东西?不理解,有高手指点ArrayList过时

解决方案 »

  1.   

    ArrayList和List<T>相比没有什么优势了,所以推荐使用ArrayList的地方都用List<T>代替
      

  2.   

    现在基本上都用泛型List<T>,
    ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据都当作为object类型来处理。这样,在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误。
    尤其是在装箱拆箱的时候,会影响性能。
      

  3.   

    我上面说的就是这个:ArrayList不是类型安全的
      

  4.   

    我现在要往前台传一个集合
    List[0]是int
    List[1]是string
    List[2]是其他的,
    那么我要用List<object>来完成,他跟ArrayList比优势在哪?
      

  5.   


    两个都不合适,建议用struct或object[]。因为这种情况下两端关于如何使用数据必然是有约定的,用struct或固定长度的数组比变长的集合要好。
      

  6.   


    List[0]是int
    List[1]是string
    List[2]是其他的,
    有可能是这样子
    List[0]是int
    List[1]是string
    List[2]是其他的,
    List[3]是int
    List[4]是string
    List[5]是其他的,
      

  7.   

    struct r{int, string, object}返回值用 List<r>
      

  8.   

    如果list[0]=1
    list[3]=object
    否则
    list[3]=string
      

  9.   


    你指比你的哪种多如果比数组的话,多个size多个version,没了。不用数组是因为看你的需求像是变长的,如果是定长肯定是数组最好了
      

  10.   

    说ArrayList过时,是大家一般的对象数组里面都是同一类型(尤其是值类型),这时使用List<T>,可以获得显著的性能提升,而且也没有类型转换的问题。但这并不是说ArrayList不能用了,如果你要用List<Object>,估计和ArrayList没有啥差别了。
      

  11.   

    本来用List也好ArrayList也好,就是因为长度不固定我才用的,到你这长度又固定了,那List还有什么优势?还不如用数组呢?不是?
      

  12.   

    对啊我就像知道List<Object>和ArrayList差别啊,你别说估计啊,准确点讲啊。
      

  13.   

     就是说看你需求嘛,定长用数组变长用list
      

  14.   

    两都都是泛型数据,相对来说,arraylist比较松散,安全性相对较低,list<T>则反之偷工减料用arraylist,一般情况下不会出错,写起来也比较容易要严谨的再考虑list<T>吧反正都能达到一样的结果
      

  15.   

    现在用泛型的比较多,其实在某些地方想用ArrayList也没什么不可以的。
      

  16.   

    ArrayList 约等于 List<object>
      

  17.   

    小曹这两天回帖时说的话,
    如果,楼主不是来斗嘴拽文的,
    我想,你这个问题微软已经说的清清楚楚的了:
    ArrayList类
    List<T>类过时与否,这是各人的主观感受,
    只要你实实在在清楚两者的区别与联系,并能恰当的运用就可以了
      

  18.   

    ++1
    arrarylist 有时也用,
    list 也在用,
      

  19.   

    本来List<T> 使用引用类型就和ArrayList没有性能差别,只是代码更清晰,而且类型安全;你如果要用List<Object>, 那就可以说完全没有差别了。
      

  20.   

    我做了一个测试发现在10000000左右的数据量的时候ArrayList比List<object>要略快0.几秒,做了几十次的试验,所以你要说完全是等效的我就觉得不太对哦~
                Start();
                List<object> listobj = new List<object>();            for (int i = 0; i < 10000000; i++)
                {
                    listobj.Add(123);
                }
                listobj.Contains(456);
                listobj.Contains(456);
                listobj.Contains(456);
                listobj.Contains(456);
                listobj.Contains(456);
                Stop();
    也可能是我测试的不太准,但是就算不准,也不能几十次,次次ArrayList都领先吧?
      

  21.   

                Start();
                ArrayList listobj = new ArrayList ();            for (int i = 0; i < 10000000; i++)
                {
                    listobj.Add(123);
                }
                listobj.Contains(456);
                listobj.Contains(456);
                listobj.Contains(456);
                listobj.Contains(456);
                listobj.Contains(456);
                Stop();
      

  22.   

    ArrayList在.NET 1.1中是唯一的选择,如果还在使用VS2003开发既有程序的话,还得用ArrayList。
      

  23.   

    哥都out了,没想到arraylist还会过时来着
      

  24.   

    如果你仔细看过我给你的MSDN的文档,那你就不至于要做一个毫无意义的所谓实验
      

  25.   

    其实这个问题没必要纠结,纠结过时不过时是没有什么意义的。你可以选择用,也可以选择不用,完全取决于你。技术本来就是要不断更新的,一层一层深入的。
    另外这两个其实都继承了IList<T>接口的。
      

  26.   

    哦是这样啊,我只是在网上看到一个文章,说他选择用ArrayList就被骂了具体什么情况时候使用他也没说明白,所以就来问问,答案难求啊,谢谢各位高手解答散分了
      

  27.   

    我让你看MSDN,那是发明者自己的解释,是最权威的了,
    文章中阐述了两者具体的共性和区别;
    而纵观本贴不少解释都是错误的,
    比如39楼最后一句说的就是错的(你看看MSDN那两篇文档中的语法就知道了)
    那你如何判断谁对谁错呢?凭谁的嘴大还是嗓门亮?
      

  28.   

    你非要得到过不过时的答复,那么:
    对于我而言,自从有了泛型以后,就改用泛型集合了,也就是说:ArrayList过时了
    但是,我不太关心这种细节,
    即便你用上所有时髦的语法,也改变不了落后的生产方式