C#集合的用法

本文介绍了C#中ArrayList和List的区别。ArrayList是非泛型集合,存在类型转换和装箱拆箱操作,效率较低,而List是泛型集合,提供更好的类型安全和性能。在初始化时,List指定了元素类型,避免了类型转换,提高了执行效率。建议在开发中优先使用List。
摘要由CSDN通过智能技术生成

在C#中,集合分为泛型集合和非泛型集合,非泛型集合的接口和类在System.Collections命名空间中,而泛型集合的接口和类在System.Collections.Generic命名空间中。

一、ArrayList

ArrayList为动态列表,是一个非泛型的线性列表,可以将需要管理的数据添加到这个列表中,然后进行一系列操作

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class s1: MonoBehaviour {

	void Start () {
		ArrayList  list = new ArrayList();//初始化动态列表对象
		list.Add("Jobs"); //向列表中添加字符串数据
		list.Add("Linus");
		list.Add("Jensen");

		print(list[1]); //Linus
		print(list.IndexOf("Jobs") //0
		print(list.Count); //打印列表的元素个数:3
		List.RemoveAt(1);//将Linus移除
		print(list.Count);//打印列表的元素个数:2
		print(list.Contains("Linus");//判断是否存在元素“Linus”,返回false
		list.Clear();//清除列表,清除后列表为空

		void Update () {
		}
}

ArrayList是一个非泛型的接口,它的每一个元素被定义为object类型,这就也为这我们可以在ArrayList的对象中添加任意类型的数据,因为在C#中,Everything is object。当我们向列表中添加int类型的数据的时候,由于要将int类型转换为object类型,这时候就发生了装箱操作。在上面的代码中,我们添加的是string类型的数据,而string类型本身是引用类型,因此这里虽然没有阿生装箱操作,但由于有类型装换,所以依然会有效率和安全性的问题。因此,不建议大家使用非泛型的集合,应当尽量使用泛型集合来存储数据。

二、List

以上代码还可以使用泛型集合中的List来进行替换:

public class s2_: MonoBehaviour {

	void Start () {
	List<string> list = new List<string>(); //初始化动态列表对象,规定列表元素类型为string类型
	list.Add("Jobs"); //向列表中添加字符串数据
	list.Add("Linus");
	list.Add("Jensen");
	
	print(list[1]); //Linus
	print(list.IndexOf("Jobs") //0
	print(list.Count); //打印列表的元素个数:3
	List.RemoveAt(1);//将Linus移除
	print(list.Count);//打印列表的元素个数:2
	print(list.Contains("Linus");//判断是否存在元素“Linus”,返回false
	list.Clear();//清除列表,清除后列表为空

	void Update () {
	}

三、总结:

List和ArrayList在使用昂发和接口上基本上是相同的,只是List是基于泛型的,在初始化的时候就规定了元素的类型,这样在进行添加、打印、判断下表、是否存在等操作时,就避免了类型转换和装箱拆箱的操作,因此提高了安全性和执行效率。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值