ArrayList为什么是过时的东西?不理解,有高手指点 ArrayList为什么是过时的东西?不理解,有高手指点ArrayList过时 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ArrayList和List<T>相比没有什么优势了,所以推荐使用ArrayList的地方都用List<T>代替 现在基本上都用泛型List<T>,ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据都当作为object类型来处理。这样,在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误。尤其是在装箱拆箱的时候,会影响性能。 我上面说的就是这个:ArrayList不是类型安全的 我现在要往前台传一个集合List[0]是intList[1]是stringList[2]是其他的,那么我要用List<object>来完成,他跟ArrayList比优势在哪? 两个都不合适,建议用struct或object[]。因为这种情况下两端关于如何使用数据必然是有约定的,用struct或固定长度的数组比变长的集合要好。 List[0]是intList[1]是stringList[2]是其他的,有可能是这样子List[0]是intList[1]是stringList[2]是其他的,List[3]是intList[4]是stringList[5]是其他的, struct r{int, string, object}返回值用 List<r> 如果list[0]=1list[3]=object否则list[3]=string 你指比你的哪种多如果比数组的话,多个size多个version,没了。不用数组是因为看你的需求像是变长的,如果是定长肯定是数组最好了 说ArrayList过时,是大家一般的对象数组里面都是同一类型(尤其是值类型),这时使用List<T>,可以获得显著的性能提升,而且也没有类型转换的问题。但这并不是说ArrayList不能用了,如果你要用List<Object>,估计和ArrayList没有啥差别了。 本来用List也好ArrayList也好,就是因为长度不固定我才用的,到你这长度又固定了,那List还有什么优势?还不如用数组呢?不是? 对啊我就像知道List<Object>和ArrayList差别啊,你别说估计啊,准确点讲啊。 就是说看你需求嘛,定长用数组变长用list 两都都是泛型数据,相对来说,arraylist比较松散,安全性相对较低,list<T>则反之偷工减料用arraylist,一般情况下不会出错,写起来也比较容易要严谨的再考虑list<T>吧反正都能达到一样的结果 现在用泛型的比较多,其实在某些地方想用ArrayList也没什么不可以的。 ArrayList 约等于 List<object> 小曹这两天回帖时说的话,如果,楼主不是来斗嘴拽文的,我想,你这个问题微软已经说的清清楚楚的了:ArrayList类List<T>类过时与否,这是各人的主观感受,只要你实实在在清楚两者的区别与联系,并能恰当的运用就可以了 ++1arrarylist 有时也用,list 也在用, 本来List<T> 使用引用类型就和ArrayList没有性能差别,只是代码更清晰,而且类型安全;你如果要用List<Object>, 那就可以说完全没有差别了。 我做了一个测试发现在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都领先吧? 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(); ArrayList在.NET 1.1中是唯一的选择,如果还在使用VS2003开发既有程序的话,还得用ArrayList。 哥都out了,没想到arraylist还会过时来着 如果你仔细看过我给你的MSDN的文档,那你就不至于要做一个毫无意义的所谓实验 其实这个问题没必要纠结,纠结过时不过时是没有什么意义的。你可以选择用,也可以选择不用,完全取决于你。技术本来就是要不断更新的,一层一层深入的。另外这两个其实都继承了IList<T>接口的。 哦是这样啊,我只是在网上看到一个文章,说他选择用ArrayList就被骂了具体什么情况时候使用他也没说明白,所以就来问问,答案难求啊,谢谢各位高手解答散分了 我让你看MSDN,那是发明者自己的解释,是最权威的了,文章中阐述了两者具体的共性和区别;而纵观本贴不少解释都是错误的,比如39楼最后一句说的就是错的(你看看MSDN那两篇文档中的语法就知道了)那你如何判断谁对谁错呢?凭谁的嘴大还是嗓门亮? 你非要得到过不过时的答复,那么:对于我而言,自从有了泛型以后,就改用泛型集合了,也就是说:ArrayList过时了但是,我不太关心这种细节,即便你用上所有时髦的语法,也改变不了落后的生产方式 帮忙看下我的这个DBHelper咋样啊?应该怎么改? 继承DataTable,重载事件相关问题请教。 对象之间的INNER JOIN??? 这样的sql语句怎么写??? 怎样获取FileUpload的各个部分? 请问,如何判断程序里某个窗体是否为Windows的当前活动窗体? 大家帮我一下 这个应该怎么写啊 打印问题,比如奖状(大部分文字都有了,只打姓名、得什么奖、日期就可以了)这种情况怎么办? C# Winform中的小疑惑? 循环获取分组后的孩子数值 c# 如何实现在datagridview中使用comobox 高德地图应用开发问题?
ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据都当作为object类型来处理。这样,在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误。
尤其是在装箱拆箱的时候,会影响性能。
List[0]是int
List[1]是string
List[2]是其他的,
那么我要用List<object>来完成,他跟ArrayList比优势在哪?
两个都不合适,建议用struct或object[]。因为这种情况下两端关于如何使用数据必然是有约定的,用struct或固定长度的数组比变长的集合要好。
List[0]是int
List[1]是string
List[2]是其他的,
有可能是这样子
List[0]是int
List[1]是string
List[2]是其他的,
List[3]是int
List[4]是string
List[5]是其他的,
list[3]=object
否则
list[3]=string
你指比你的哪种多如果比数组的话,多个size多个version,没了。不用数组是因为看你的需求像是变长的,如果是定长肯定是数组最好了
如果,楼主不是来斗嘴拽文的,
我想,你这个问题微软已经说的清清楚楚的了:
ArrayList类
List<T>类过时与否,这是各人的主观感受,
只要你实实在在清楚两者的区别与联系,并能恰当的运用就可以了
arrarylist 有时也用,
list 也在用,
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都领先吧?
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();
另外这两个其实都继承了IList<T>接口的。
文章中阐述了两者具体的共性和区别;
而纵观本贴不少解释都是错误的,
比如39楼最后一句说的就是错的(你看看MSDN那两篇文档中的语法就知道了)
那你如何判断谁对谁错呢?凭谁的嘴大还是嗓门亮?
对于我而言,自从有了泛型以后,就改用泛型集合了,也就是说:ArrayList过时了
但是,我不太关心这种细节,
即便你用上所有时髦的语法,也改变不了落后的生产方式