前言

  在工作中经常遇到C#数组、ArrayList、List、Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍。于是抽空好好看了下他们的用法和比较,在这里总结下来,后面有需要改进的再更新。

初始化

数组:

int[] buff = new int[];

ArrayList:

ArrayList buff = new ArrayList();

List:

List<int> buff = new List<int>();

Dictionary:

Dictionary<int,string> buff = new Dictionary<int,string>;

分析比较

  从上面初始化的几种类型可以看出,他们都属于引用类型。其中数组、List、Dictionary在初始化的时候需要指定其元素类型,而ArrayList不需要指定类型。而在其中只有数组在初始化时设置了其大小。

  数组:在初始化时必须指定其大小和类型,他在内存中是连续存储的,所以可以看出数组的索引速度是非常快的。在确定了数组的长度和类型后,选择数组存储数据是比较好的选择。不适合插入操作。

  ArrayList:在初始化的时候不需要指定其大小和类型。他可以存储不同的数据类型,但是在存取得过程中会引起装箱和拆箱,降低了性能。插入操作方便。

  List:在初始化的时候必须指定其类型,但是不需要指定大小,所以他不会像ArraryList那样在存取过程中引起装箱和拆箱操作。在类型相同的情况下,List和数组的性能相当。插入操作方便。

  Dictionary:在初始化的时候也必须指定其类型,而且他还需要指定一个Key,并且这个Key是唯一的。正因为这样,Dictionary的索引速度非常快。但是也因为他增加了一个Key,Dictionary占用的内存空间比其他类型要大。他是通过Key来查找元素的,元素的顺序是不定的。

类型 确定大小 确定类型 索引速度 性能
数组 Y Y 很快 最高
ArrayList N N 一般
List N Y 很快
Dictionary N Y 最快 一般

注:以上内容如有描述不妥,请留言,分享知识,共成长!

C# 数组、ArrayList、List、Dictionary的用法与区别的更多相关文章

  1. ArrayList与List对象用法与区别

    比如: 代码如下 复制代码 string[] s=new string[3];//赋值s[0]="a";s[1]="b";s[2]="c"; ...

  2. C#数组 List、Dictionary 、Arrary、ArrayList

    #region Dictionary 泛型集合,动态修改查询.查询和排序 Dictionary<string, string> dic = new Dictionary<string ...

  3. [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)

    [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...

  4. C#中Dictionary的用法

    在C#中,Dictionary提供快速的基于兼职的元素查找.他的结构是这样的:Dictionary<[key], [value]> ,当你有很多元素的时候可以使用它.它包含在System. ...

  5. 关于C#中的动态数组ArrayList

    在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类与Array类的区别 ArrayList类实 ...

  6. ASP.NET中Dictionary基本用法实例分析

    本文实例讲述了ASP.NET中Dictionary基本用法.分享给大家供大家参考,具体如下: //Dictionary位于System.Collections.Generic命名空间之下 /*  * ...

  7. C#动态数组ArrayList

    在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类的常用属性和方法 1. ArrayList类 ...

  8. C#基础-数组-ArrayList

    数组ArrayList using System.Collections; //表示引入集合的命名空间 数组ArrayList容量本身是不固定的,根据存储的数据动态变化 // 声明一个ArrayLis ...

  9. JAVA中数组Arrays类的常见用法

    import java.util.Arrays; int[] array1={7,8,3,2,12,6,5,4}; 1.  //克隆clone  int[] array2=array1.clone() ...

随机推荐

  1. arrayList LinkedList HashMap HashTable的区别

    ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一 ...

  2. hibernate--ID生成策略--XML

    xml生成id, a) generator b) 常用4个: native, uuid, identity, sequence 1. 新建java项目,  引入hibernate, junit(use ...

  3. C# 开发系列(一)

    1.开发环境搭建: win7 32位系统,然后安装 visual studio 2012. 2.将 .net_framework 加入到windows 的环境变量当中. C:\Windows\Micr ...

  4. lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析

    目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障.那么他们为什么这么搭配,而又有什么 ...

  5. AWK第一篇------全面介绍

    AWK-文本流编辑器 目录 [隐藏] 1 命令行语法 2 用shell实现调用awk 3 awk语言概要 3.1 记录和字段 3.2 脚本的格式 3.3 行为终止 3.4 注释 3.5 模式 3.6  ...

  6. PageRank在Hadoop和spark下的实现以及对比

    关于PageRank的地位,不必多说. 主要思想:对于每个网页,用户都有可能点击网页上的某个链接,例如 A:B,C,D B:A,D C:AD:B,C 由这个我们可以得到网页的转移矩阵      A   ...

  7. TFS-Git官方教程

    VS2015:官网教程 VS2013:  GIT教程

  8. jascript基础教程学习总结(2)

    摘自:javascript基础教程 用链接对用户进行重定向: js001.html 这个HTML页面基于链接对用户进行重定向 <!DOCTYPE html PUBLIC "-//W3C ...

  9. FZU 1061 矩阵连乘

    用栈来算一算就可以了. #include<iostream> #include<algorithm> #include<cstdio> #include<cs ...

  10. LPC2478时钟模块详解

    时钟框图如上图,系统时钟来源分别是内部4M的RC振荡器和外置晶振,RTC模块在某些情况下也可以作为主时钟,经过系统时钟选择s\de时钟需要经过PLL倍频(或者不倍频),处理过的PLL输出USB时钟分频 ...