Array、ArrayList和List三者的区别
数组
class TestArraysClass
{
static void Main()
{
// Declare a single-dimensional array
int[] array1 = new int[]; // Declare and set array element values
int[] array2 = new int[] { , , , , }; // Alternative syntax
int[] array3 = { , , , , , }; // Declare a two dimensional array
int[,] multiDimensionalArray1 = new int[, ]; // Declare and set array element values
int[,] multiDimensionalArray2 = { { , , }, { , , } }; // Declare a jagged array
int[][] jaggedArray = new int[][]; // Set the values of the first array in the jagged array structure
jaggedArray[] = new int[] { , , , };
}
}
数组在声明时必须指定长度
ArryList
ArrayList list1 = new ArrayList();
//新增数据
list1.Add("cde");
list1.Add(); //不安全类型
//修改数据
list[] = ;
//移除数据
list.RemoveAt();
//插入数据
list.Insert(, "qwe");
从上面的例子看,在list1中,我们不仅插入了字符串cde,而且插入了数字5678。这样在ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据当作为object类型来处理,在我们使用ArrayList处理数据时,很可能会报类型不匹配的错误,也就是ArrayList不是类型安全的。在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损。
泛型List
List<string> list = new List<string>();
//新增数据
list.Add(“abc”);
//修改数据
list[] = “def”;
//移除数据
list.RemoveAt();
如果我们往List集合中插入int数组123,IDE就会报错,且不能通过编译。这样就避免了前面讲的类型安全问题与装箱拆箱的性能问题了。
总结:
数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List<T>的容量可根据需要自动扩充、修改、删除或插入数据。
数组可以具有多个维度,而 ArrayList或 List< T> 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于 ArrayList的性能。 这是因为 ArrayList的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List< T> 的性能与同类型的数组十分相近。
在决定使用 List<T> 还是使用ArrayList 类(两者具有类似的功能)时,记住List<T> 类在大多数情况下执行得更好并且是类型安全的。如果对List< T> 类的类型T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型T使用值类型,则需要考虑实现和装箱问题。
Array、ArrayList和List三者的区别的更多相关文章
- C# 数组、ArrayList和List三者的区别
		在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ... 
- 问题:C# List;结果:C#中数组、ArrayList和List三者的区别
		C#中数组.ArrayList和List三者的区别 分类: [C#那些事] 2013-03-11 00:03 36533人阅读 评论(23) 收藏 举报 目录(?)[+] 在C#中数组,ArrayLi ... 
- c#中Array,ArrayList 与List<T>的区别、共性与转换
		本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ... 
- C#中Array、ArrayList和List三者的区别
		1.Array 在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. 它的空间大小是固定的,空间不够时也不能再次申请,所以需要事前确定合适的空间大小. 2. ... 
- 基础知识系列☞C#中数组Array、ArrayList和List三者的区别
		数组() #region 数组 //初始化方式_0:先声明再赋值 ]; weekDays_0[] = "Sun"; weekDays_0[] = "Mon"; ... 
- C#中数组、ArrayList和List三者的区别
		在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ... 
- C#中数组、ArrayList和List三者的区别   转
		在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ... 
- 【转载】 C#中数组、ArrayList和List三者的区别
		原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到 ... 
- (转)C#中数组、ArrayList和List三者的区别
		原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到 ... 
随机推荐
- 标准模板库使用参考——vector向量容器
			C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法. 在C++标准库中,ST ... 
- php代码审计3审计sql注入漏洞
			SQL注入攻击(sql injection)被广泛用于非法获取网站控制权,在设计程序时,忽略或过度任性用户的输入,从而使数据库受到攻击,可能导致数据被窃取,更改,删除以及导致服务器被嵌入后门程序等 s ... 
- LNMP(linux+nginx+mysql+php)服务器环境配置【转载】
			本文转载自 园友David_Tang的博客,如有侵权请联系本人及时删除,原文地址: http://www.cnblogs.com/mchina/archive/2012/05/17/2507102.h ... 
- 最新cenos执行service httpd restart 报错Failed to restart httpd.service: Unit not found.
			原来是需要将Apache注册到Linux服务里面啊!注册Apache到Linux服务在Linux下用源代码方式编译安装完Apache后,启动关闭Apache可以通过如下命令实现: /usr/local ... 
- python3+Django1.11+mysql5.7 MySQL DB API Drivers
			The Python Database API is described in PEP 249. MySQL has three prominent drivers that implement th ... 
- Gym - 101908G  二分答案+最大流
			After the end of the truck drivers' strike, you and the rest of Nlogônia logistics specialists now h ... 
- js 定时器的用法和清除
			一.设置定时器 window对象提供了两个方法来实现定时器的效果, 分别是window.setTimeout()和window.setInterval.其中前者可以使一段代码在指定时间后运行:而后者则 ... 
- java线程面试
			1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ... 
- sublime text3文本字体大小设置
			1.perferences->settings-user 4·将以下代码粘贴进入即可 { "font_face": "source code pro, " ... 
- leetcode 88 Merge Sorted Array 归并排序
			归并排序:先将数组一分为二,将左边部分排序(同样将其一分为二),再将右边部分排序,最后逐层归并.(分治策略)(稳定排序). 算法稳定性 -- 假设在数列中存在a[i]=a[j],若在排序之前,a[i] ... 
