• 忠实履行党的新闻舆论工作职责使命不断提升传播力引导力影响力公信力 2019-05-21
  • [微笑]你说的这种情况越来越少了,一是人们的素质都在不断提高,二是有相应的管理机制。 2019-04-28
  • 尽管管理层一任一任地换,但是以每年IPO数量的多少作为反映政绩的主要标志,而对于股市下跌、市值(包括国有股)损失、经济晴雨表失真、投资者利益巨亏等等,则不在考核 2019-04-28
  • 失传千年宋刻孤本竟为民国总统曹锟旧藏 2019-04-26
  • 警察都帮他!印度“大师”差点越狱成功 2019-04-26
  • 回复@看着就想笑:历史至今的客观事实是奴隶主剥削奴隶、封建地主剥削农奴、资本家剥削雇佣劳动者、师傅剥削徒弟都是建立在私有制基础上的,而且小私有和他人联合顾工生 2019-04-24
  • 青岛欢迎你,上合  2019-04-22
  • 端午节西安南湖赛龙舟 传承文化祈福安康 2019-04-22
  • 世界文化遗产旅行地中国国家地理网 2019-04-17
  • 我省进入毒蘑菇中毒高发季 省疾控中心发布安全警示 2019-04-17
  • 《人民日报》与红旗渠 2019-04-14
  • 世界杯八大热门悉数亮相 西班牙巴西最有冠军相 2019-04-14
  • 宣酒李健:酒业营销六段证明,必须抓住消费者这个“一”营销 阶段 2019-04-01
  • 巨力索具利润七连降 高管套现26亿分红不足3亿 2019-03-23
  • 澳大利亚主帅:勇气和信念在对阵法国队时至关重要 2019-03-21
  • 山西11选5走势:C#中数组Array、ArrayList、泛型List<T>的比较

    在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析。

    一、数组Array

    数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。

    Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。

    数组在内存中是连续存储的,所以它的索引速度非???,而且赋值与修改元素也非常简单。

    Array数组具体用法:

    数组虽然存储检索数据很快,但是也有一些缺点:

    1、在声明数组的时候必须指定数组的长度,如果不清楚数组的长度,就会变得很麻烦。

    2、数组的长度太长,会造成内存浪费;太短会造成数据溢出的错误。

    3、在数组的两个数据间插入数据是很麻烦的

    更多参考微软官方文档:Array 类 (System)

    二、ArrayList

    既然数组有很多缺点,C#就提供了ArrayList对象来克服这些缺点。

    ArrayList是在命名空间System.Collections下,在使用该类时必须进行引用,同时继承了IList接口,提供了数据存储和检索。

    ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。因此在声明ArrayList对象时并不需要指定它的长度。

    ArrayList 的默认初始容量为 0。随着元素添加到 ArrayList 中,容量会根据需要通过重新分配自动增加??赏ü饔?TrimToSize 或通过显式设置 Capacity 属性减少容量。

    运行结果:

    ArrayList解决了数组中所有的缺点,但是在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损。尤其是装箱操作,例如:

    在List中,先插入了字符串joye.net,而且插入了int类型27。这样在ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据当作为object类型来处理,在使用ArrayList处理数据时,很可能会报类型不匹配的错误,也就是ArrayList不是类型安全的。

    更多参考微软官方ArrayList文档:ArrayList 类 (System.Collections)

    三、泛型List<T>

    由于ArrayList存在不安全类型与装箱拆箱的缺点,所以出现了泛型的概念。

    List 类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList 泛型接口,大部分用法都与ArrayList相似。

    List<T> 是类型安全的,在声明List集合时,必须为其声明List集合内数据的对象类型。

    如果声明List集合内数据的对象类型是string,然后往List集合中插入int类型的111,IDE就会报错,且不能通过编译。显然这样List<T>是类型安全的。

    对返回结果集再封装:

    更多参考微软官方文档:List泛型类

    四、总结

    1、数组的容量固定,而ArrayList或List<T>的容量可根据需要自动扩充。

    2、数组可有多个维度,而 ArrayList或 List<T> 始终只有一个维度。(可以创建数组列表或列表的列表)

    3、特定类型的数组性能优于 ArrayList的性能(不包括Object,因为 ArrayList的元素是 Object ,在存储或检索值类型时通常发生装箱和取消装箱操作)。

    4、?ArrayList 和 List<T>基本等效,如果List <T>类的类型T是引用类型,则两个类的行为是完全相同的。如果T是值类型,需要考虑装箱和拆箱造成的性能损耗。List<T> 是类型安全。

    1 5 收藏 1 评论