C# 数组、ArrayList、List、Dictionary的用法与区别
2017-02-06 11:24
796 查看
前言
在工作中经常遇到C#数组、ArrayList、List、Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍。于是抽空好好看了下他们的用法和比较,在这里总结下来,后面有需要改进的再更新。
初始化
数组:
ArrayList:
List:
Dictionary:
分析比较
从上面初始化的几种类型可以看出,他们都属于引用类型。其中数组、List、Dictionary在初始化的时候需要指定其元素类型,而ArrayList不需要指定类型。而在其中只有数组在初始化时设置了其大小。
数组:在初始化时必须指定其大小和类型,他在内存中是连续存储的,所以可以看出数组的索引速度是非常快的。在确定了数组的长度和类型后,选择数组存储数据是比较好的选择。不适合插入操作。
ArrayList:在初始化的时候不需要指定其大小和类型。他可以存储不同的数据类型,但是在存取得过程中会引起装箱和拆箱,降低了性能。插入操作方便。
List:在初始化的时候必须指定其类型,但是不需要指定大小,所以他不会像ArraryList那样在存取过程中引起装箱和拆箱操作。在类型相同的情况下,List和数组的性能相当。插入操作方便。
Dictionary:在初始化的时候也必须指定其类型,而且他还需要指定一个Key,并且这个Key是唯一的。正因为这样,Dictionary的索引速度非常快。但是也因为他增加了一个Key,Dictionary占用的内存空间比其他类型要大。他是通过Key来查找元素的,元素的顺序是不定的。
注:以上内容如有描述不妥,请留言,分享知识,共成长!
在工作中经常遇到C#数组、ArrayList、List、Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍。于是抽空好好看了下他们的用法和比较,在这里总结下来,后面有需要改进的再更新。
初始化
数组:
int[] buff = new int[6];
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#异步编程详解
- 基于C#的UDP协议的同步通信实现代码
- c# 中文转拼音without CJK
- C# 反射详解
- C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)
- C#action和func的使用
- 20、C#:使用VS2010生成dll文件
- 人事管理系统实现(二)
- Excel的Range对象(C#)
- .NET中两种OCR方式对比
- c#委托和事件
- 从C#到TypeScript - 高级类型
- .NetCore~C#6的一些新特性
- C# LDAP
- LINQ 查询表达式(C# 编程指南)
- C# DataTable 增加行与列
- C#图解教程 第十六章 转换
- C# 注释
- C# 利用CMD命令行结束进程
- C#上传并保存图片、加水印、生成缩略图