C_Sharp 板


LINE

我也来帮忙补充一下MSDN对List<T>与ArrayList的说明,如下: 来源网址: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx Performance Considerations In deciding whether to use the List<T> or ArrayList class, both of which have similar functionality, remember that the List<T> class performs better in most cases and is type safe. If a reference type is used for type T of the List<T> class, the behavior of the two classes is identical. However, if a value type is used for type T, you need to consider implementation and boxing issues. If a value type is used for type T, the compiler generates an implementation of the List<T> class specifically for that value type. That means a list element of a List<T> object does not have to be boxed before the element can be used, and after about 500 list elements are created the memory saved not boxing list elements is greater than the memory used to generate the class implementation. 再参考此Blog开发者所做的实验: http://allantech.blogspot.com/2007/03/performance-arraylist-vs-list.html 对照上述内容,如同MSDN的说明: 若type T是reference type时,List<T>与ArrayList是无异的。 若type T是value type时,C#编译器则会针对List<T>进行优化。 上述Blog内容只有针对Add操作进行实验, 其他可能还有如looping、coping、inserting...等,也会有些差异。 但不管如何,效能与弹性时常就是很难兼得的。 其实在开发大部份的系统而言,我比较偏好操作弹性佳与易懂的程式码。 也或许我没什麽机会去接触到百万笔以上资料的处理吧,所以没有感受明显的差异。 而且,我若为了效能而写出不容易修改与了解的程式码,反而其他人不好接手。 ※ 引述《cole945 (躂躂..)》之铭言: : int[] 的效能应该是""略""小於 List<T> (後面会说 "略" 在哪里) : 而 ArrayList 等於是 List<bject>, 两个一样... : 所以要用哪一个, 基本上看你自己的需求 : 再讲内部一点点.. : 在 C# 的 T[] 其实就是包装过的 System.Arrary : 而 List<T> 的话, 大略就是 : class List<T> : { : T[] items; : public T this[int index] : { : get { : if( index<_size) : throw OutOfRange; : return items[index]; : } : set { : if( index<_size) : throw OutOfRange; : items[index] = value; : } : } : } : 事实上, 他比较像 c++中的 vector<T> : 本质是 fixed size 的 array, 存取快O(1) : 但他可以一直 Add 东西进去越变越大.. : 如果超过 size 的话, 会重新 alloc 一块更大的 (一般来说用原本的2倍) -- 对於已经无法拥有的 唯一能做的是 不要忘记 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.230.123.180 ※ 编辑: petrushka 来自: 125.230.123.180 (05/23 02:53)
1F:推 deuter:既然已经有List<T> 已经没有必要再回头用 ArrayList 了 05/23 08:23
2F:→ deuter:而且 List<T> 还可以配上Linq 和 IEnumerable<T>有更多方法 05/23 08:23
3F:推 aej:在.net里面会看到很多很类似的功能,而新旧函式原因占大部分 05/23 10:54
4F:→ aej:这是MS考虑到向下相容,不然旧系统升级就不能用,这是很麻烦的 05/23 10:54
5F:→ aej:到时候为了成本考量也许不会买新的开版来开发 05/23 10:55







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP