news 2026/8/24 4:56:16

C#动态数组ArrayList和List技巧全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#动态数组ArrayList和List技巧全解析

// ArrayList:

动态数组一个不固定长度的数组集合,并且可以存储不同类型的元素,例如一个arrayList对象可以存储整型、字符串、对象、数组等,
//但是int[]这种数组一旦创建好之后 不能后续添加元素,也就是长度是固定,并且一个数组对象只能存储一种类型的元素

//ArrayList 类; arr 对象

//ArrayList 弊端:取出元素是一个object 必须对其在进行类型转换

注意:存储元素类型object类型,取出的时候转成对应的类型,类型不安全


//1 创建一个arrayList对象


int[] ints = new int[] { 1, 2, 3 };
People p1 = new People() { Name="zs"};
ArrayList arr = new ArrayList() { 1,2,3,"坤拳",true,ints,p1}; //初始化添加元素

//2 取出元素 通过索引值取元素 arr[1]


//int aa = arr[0]; //数组取出的元素是object类型,如果想转成其他类型 必须强制转换
Console.WriteLine( Convert.ToInt16(arr[1]));

//3 清空元素


arr.Clear();

//4 添加元素


arr.Add(1);
arr.Add("说得好");//添加一个元素
arr.AddRange(ints);//也可以添加一个数组

//5删除元素


arr.Remove("说得好"); //删除指定元素
arr.RemoveAt(0);// 删除指定位置元素
arr.RemoveRange(0,3);// 从指定参数1位置开始删除参数个数的元素

//6 数组插入


arr.Add(12);
arr.Add(24);
arr.Insert(1, 36);//在参数1这个位置插入参数2这个元素
//arr.InsertRange(0,ints); //在指定位置插入一个数组

//7修改元素


arr[1] = 48;

//8数组排序


arr.Sort(); //默认的是升序排序

//9indexOf() 元素的索引值


Console.WriteLine(arr.IndexOf(48));

//10count 获取数组的个数


Console.WriteLine(arr.Count);

//11 Reverse();把数组里面的元素进行倒序


arr.Reverse();

//12toArray(); 把ArrayList转成Array(int[])


object[] ii= arr.ToArray();


//Array数组 int[]

//ArrayList 动态数组

// List

方法和ArrayList很像 区别在于list可以指定类型进行存储,存储同一种类型数据 ,取出时候不用强制转换,保证数据类型安全
List<int> list1 = new List<int>(); //创建集合对象

//1 添加元素


list1.Add(1);
list1.Add(2);
list1.Add(3);
list1.AddRange(new int[] {9,10,11}); //添加多个

//2 删除


list1.Remove(11);//删除指定元素
list1.RemoveAt(list1.Count-1);//删除指定位置的元素
list1.RemoveAll(v => v % 3 == 0);//删除满足条件所有的元素

//3修改


list1[0] = 20;


//4插入数据


list1.Insert(1, 10);//在索引值为1的地方插入888

//5IndexOf()获取元素的索引值


Console.WriteLine(list1.IndexOf(888));

//6 Clear()清空集合


//list1.Clear(); 清空集合

//7Any() 有一个满足条件就为true


Console.WriteLine(list1.Any(v => v > 888));

//8Average() 求序列中元素的平均值


Console.WriteLine(list1.Average());

//9Concat() 拼接俩个数组,返回的是一个新数组


list1.Concat(new int[] {36});

//10Contains() 数组是否包含2


Console.WriteLine(list1.Contains(2));

//11Sum() 求和


Console.WriteLine(list1.Sum());

//12Skip() 跳过自定的个数,返回剩余的


int[] ss = list1.Skip(1).ToArray();

//13Max() 找出序列元素最大值


Console.WriteLine(list1.Max());

//查询多个使用遍历,查询一个使用索引值arr[0]


foreach (int i in list1)
{
Console.WriteLine(i+"-------");
}


int[] ss2 = new int[] { 1, 2, 4 }; //数组
//list1 定义集合{20,10,2} 针对list1集合里面的元素进行操作,不做任何计算
//ss2 { 1, 2, 4 } 针对list2里面元素进行*10的操作 变成了{10,20,40}
//(x,y)=>new People(){ Num1=x,Num2=y } 对变化之后的xy添加到People的Num1和Num2属性上
//方法的结果一个集合,list1的20 与ss的2*10对应上, 把对应关返回了
//也就是20 ----- 2作为匹配结果
// 10 ----1 也是匹配上

var result = list1.Join(ss2,
x=>x,
y=>y*10,
(x,y)=>new People(){ Num1=x,Num2=y }
);

foreach (var item in result)
{
Console.WriteLine(item.Num1+"-----"+ item.Num2);
}



class People
{
public int Num1 { get; set; }
public int Num2 { get; set; }
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 10:58:50

DiffSynth-Studio 扩散模型视频生成完整安装配置指南

DiffSynth-Studio 扩散模型视频生成完整安装配置指南 【免费下载链接】DiffSynth-Studio DiffSynth Studio 是一个扩散引擎。我们重组了包括 Text Encoder、UNet、VAE 等在内的架构&#xff0c;保持了与开源社区模型的兼容性&#xff0c;同时提高了计算性能。我们提供了许多有趣…

作者头像 李华
网站建设 2026/8/24 12:43:54

Dlib疲劳驾驶检测系统终极指南:从零快速上手完整教程

Dlib疲劳驾驶检测系统终极指南&#xff1a;从零快速上手完整教程 【免费下载链接】Fatigue-Driving-Detection-Based-on-Dlib 项目地址: https://gitcode.com/gh_mirrors/fa/Fatigue-Driving-Detection-Based-on-Dlib 想要打造一个智能的疲劳驾驶检测系统吗&#xff1f…

作者头像 李华
网站建设 2026/8/24 12:51:59

戴森球计划燃料棒生产终极指南:如何从零建立高效能源供应链

戴森球计划燃料棒生产终极指南&#xff1a;如何从零建立高效能源供应链 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 在戴森球计划的星际探索中&#xff0c;燃料棒是维持…

作者头像 李华
网站建设 2026/8/23 19:30:46

36、Python命令行工具的高级用法与实践

Python命令行工具的高级用法与实践 1. 多参数选项的使用模式 默认情况下, optparse 中的选项只能接受一个参数,但我们可以将其设置为接受多个参数。以下示例实现了一个类似 ls 的功能,可同时显示两个目录的内容: #!/usr/bin/env python import optparse import osd…

作者头像 李华
网站建设 2026/8/24 13:28:35

神级在线工具箱,牛批了

今天给大家推荐6款办公利器在线网站。对于平时处理一些文档还是非常实用的&#xff0c;这些网站都是免费的。喜欢的话可以加入浏览器的书签。 PDF 派 无限次使用&#xff0c;永久免费 几十个强大的PDF在线工具&#xff0c;免费使用&#xff0c;没有注册入口&#xff0c;都是VI…

作者头像 李华
网站建设 2026/8/24 13:31:17

移动开发新宠:用Flutter 4.0快速构建跨平台应用

一、框架革新&#xff1a;Flutter 4.0的技术架构突破 2025年发布的Flutter 4.0在渲染引擎Dart 3.4的支持下&#xff0c;实现了渲染一致性的重大提升。其Skia图形引擎的优化使iOS/Android双平台组件渲染差异率从3.0版本的5.7%降至0.8%&#xff0c;这直接解决了测试工程师长期面…

作者头像 李华