C# 温故而知新:数组 / Array / ArrayList / List

本文详细介绍了C#中的数组(Array)、ArrayList及泛型List的使用方法与特点,对比了它们之间的区别,包括存储方式、数据类型、性能表现等方面。

一. 数组

1. 数组 引用的命名空间是 using System

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

//数组
string[] s=new string[2];

//赋值
s[0]="a";
s[1]="b";
//修改
s[1]="a1";

在数组中的两个数据间插入数据很麻烦,且在声明数组的时候必须指定数组的长度,数组的长度过长,会造成内存浪费,过短会造成数据溢出的错误。

二. Array

Array 就是 数组 的基类,其引用的命名空间是 using System。

三. ArrayList

ArrayList 引用的命名空间是 System.Collections

1. 其在内存中存储的数据来动态扩充与收缩的,所以,在声明ArrayList对象时并不需要指定它的长度;

2. 在 ArrayList 中存储的是对象 object,故使用该类时必须进行引用,且允许插入不同类型的数据;

3. 同时继承了IList接口,提供了数据存储和检索等方法。

// 声明 ArrayList
ArrayList arrayList1 = new ArrayList();

//新增数据
arrayList1.Add("cde");
arrayList1.Add(5678);

//修改数据
arrayList1[2] = 34;
//移除数据
arrayList1.RemoveAt(0);
//插入数据
arrayList1.Insert(0, "qwe");

ArrayList 将其中的数据当作为object类型来处理,在进行数据增删改时,可能会因类型不匹配导致报错,也就是ArrayList不是类型安全的。在存储或检索值类型时因需要进行装箱和拆箱操作,导致性能耗损。

装箱:简单地说——将值类型的数据打包到引用类型的实例中:

// 装箱 示例
string  s=”abc”;
object obj=(object)s;

拆箱:简单地说——从引用数据中提取值:

// 拆箱 示例
object obj=”abc”;
string i=(string)obj;

四. List | 泛型

1. List 引用的命名空间是 using System.Collections.Generic

2. List 类是 ArrayList 类的泛型等效类,其大部分用法与 ArrayList 相似,因为 List 也继承了 IList 接口;

3. 由于 List 需要事先声明集合内数据类型,因此其避免了装箱与拆箱动作,保证了性能的高效。

//声明 myList 为 List 泛型,并指定为 string 数据类型
List<string> myList = new List<string>();

//新增数据
myList.Add(“abc”);
//修改数据
myList[0] = “def”;
//移除数据
myList.RemoveAt(0);

 

转载于:https://my.oschina.net/primates/blog/1621805

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值