当前位置: 首页 > news >正文

非范型ArrayList和泛型List<T>

ArrayList 是 C# 中的一个非泛型集合类,它属于 System.Collections 命名空间。它提供了动态数组的功能,允许你在运行时添加、删除和访问元素。然而,需要注意的是,ArrayList 并不是类型安全的,因为你可以向其中添加任何类型的对象,这可能会在后续处理元素时引发问题,比如类型转换错误。
创建 ArrayList
在 C# 中,你可以这样创建一个 ArrayList:
csharp
复制
using System;
using System.Collections;

class Program
{
static void Main()
{
ArrayList myArrayList = new ArrayList();

    // 添加元素myArrayList.Add(1);myArrayList.Add("Hello");myArrayList.Add(3.14);// 遍历 ArrayListforeach(object item in myArrayList){Console.WriteLine(item);}
}

}
在这个例子中,ArrayList 包含了不同类型的对象(int、string 和 double)。这展示了 ArrayList 的灵活性,但也揭示了它类型不安全的缺点。
访问元素
你可以通过索引访问 ArrayList 中的元素,但是需要注意,访问时返回的类型是 object,因此如果你知道元素的确切类型,可能需要进行类型转换:
csharp
复制
int firstItem = (int)myArrayList[0];
string secondItem = (string)myArrayList[1];
double thirdItem = (double)myArrayList[2];
添加和删除元素
除了 Add 方法,ArrayList 还提供了 AddRange 方法来一次性添加多个元素(这些元素应该来自实现了 ICollection 接口的集合),以及 Remove 和 RemoveAt 方法来删除元素。
泛型集合 vs ArrayList
尽管 ArrayList 提供了一种灵活的方式来存储对象集合,但在现代 C# 编程中,更推荐使用泛型集合(如 List),因为它们提供了类型安全,避免了类型转换的需要,并且通常提供了更好的性能。
例如,使用 List 代替 ArrayList 存储整数:
csharp
复制
using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
List myList = new List();

    myList.Add(1);myList.Add(2);myList.Add(3);// 不需要类型转换foreach(int item in myList){Console.WriteLine(item);}
}

}
在这个例子中,List 明确指定了其存储的元素类型为 int,因此不需要进行类型转换,代码更简洁、更安全。

相关文章:

  • Service服务在Android中的使用
  • UDP双向通信
  • SQL注入实例(sqli-labs/less-17)
  • CMake,Makefile,CMakeLists.txt的关系和作用
  • 10分钟学会Docker的安装和使用
  • 概述:Dubbo、Nacos、 Zookeeper 等分布式服务协调与治理等技术
  • WUP-CH34X ch34x系列芯片USB转串口通信uniapp插件使用说明
  • leetcode算法刷题记录--7
  • 编程新手必看:彻底理解!与~的取反操作
  • [C++][opencv]基于opencv实现photoshop算法色阶调整
  • 职场英语培训柯桥外语学校学外语学英语到银泰泓畅学校
  • 【Python学习手册(第四版)】学习笔记19-函数的高级话题
  • 虚拟机macos安装brew、llvm并使用cmake构建项目
  • vue3前端开发-小兔鲜项目-添加购物车操作第一步
  • 59.螺旋矩阵II54.螺旋矩阵
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 2017-08-04 前端日报
  • Apache Pulsar 2.1 重磅发布
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • golang中接口赋值与方法集
  • JDK 6和JDK 7中的substring()方法
  • js对象的深浅拷贝
  • KMP算法及优化
  • mongo索引构建
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • React as a UI Runtime(五、列表)
  • spring boot下thymeleaf全局静态变量配置
  • Vue2.x学习三:事件处理生命周期钩子
  • vue自定义指令实现v-tap插件
  • 微信支付JSAPI,实测!终极方案
  • 我这样减少了26.5M Java内存!
  • ​zookeeper集群配置与启动
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #NOIP 2014# day.2 T2 寻找道路
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (175)FPGA门控时钟技术
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (八)Spring源码解析:Spring MVC
  • (一)RocketMQ初步认识
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)基于IDEA的JAVA基础10
  • (转)3D模板阴影原理
  • .NET BackgroundWorker
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net 获取某一天 在当月是 第几周 函数
  • .NET4.0并行计算技术基础(1)
  • .net反编译工具
  • @PostConstruct 注解的方法用于资源的初始化
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [《百万宝贝》观后]To be or not to be?
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory