C# List定义和常用方法
栏目总目录
List的定义
列表(List)是一种常用的集合类型,它属于System.Collections.Generic命名空间。列表是一个有序集合,可以包含重复的元素,并且可以根据索引访问元素。
List< T >
List<T> 是一个泛型集合,它提供了比数组更灵活的方式来存储和操作数据。List<T> 继承自 IList<T> 接口,并实现了许多用于添加、移除、搜索、排序等操作的方法。
通过指定类型参数 T 来定义一个 List<T>。例如存储一个字符串列表,可以这样定义:
List<string> myStringList = new List<string>();
常用方法
Add(T item)
向列表的末尾添加一个元素。
myStringList.Add("Hello");
myStringList.Add("World");
AddRange(IEnumerable collection)
向列表的末尾添加一系列元素。
List<string> moreStrings = new List<string> { "C#", "Programming" };
myStringList.AddRange(moreStrings);
Remove(T item)
从列表中移除第一个匹配的元素。
myStringList.Remove("Hello");
RemoveAt(int index)
根据索引移除列表中的元素。
myStringList.RemoveAt(0); // 假设 "World" 是第一个元素
Clear()
移除列表中的所有元素。
myStringList.Clear();
Find(Predicate match)
返回列表中第一个匹配指定条件的元素。
string found = myStringList.Find(item => item.StartsWith("C#"));
Console.WriteLine(found); // 输出 "C#"
FindAll(Predicate match)
返回一个新列表,包含所有匹配指定条件的元素。
List<string> filteredList = myStringList.FindAll(item => item.Length > 4);
foreach (var item in filteredList)
{Console.WriteLine(item);
}
Sort()
对列表中的元素进行排序。
myIntList.Add(3);
myIntList.Add(1);
myIntList.Add(2);
myIntList.Sort();
foreach (var item in myIntList)
{Console.WriteLine(item);
}
// 输出将按升序排列:1, 2, 3
Exists(Predicate match)
确定列表是否包含符合指定条件的元素。
bool containsLongWord = myStringList.Exists(item => item.Length > 5);
Console.WriteLine(containsLongWord); // 如果列表中有长度大于5的字符串,则输出 True
Contains(T item)
确定列表中是否包含特定元素。
bool containsHello = myStringList.Contains("Hello");
Console.WriteLine(containsHello); // 如果列表中包含 "Hello",则输出 True
插入元素
-
Insert(int index, T item):
在列表的指定索引处插入一个元素。如果索引超出当前列表的范围,则会抛出异常。myStringList.Insert(1, "Middle"); // 在索引1的位置插入"Middle" -
InsertRange(int index, IEnumerable collection):
在列表的指定索引处插入一个集合的元素。这允许你一次性在列表的特定位置插入多个元素。List<string> moreItems = new List<string> { "Extra1", "Extra2" }; myStringList.InsertRange(2, moreItems); // 在索引2的位置插入moreItems集合
复制与转换
-
CopyTo(T[] array, int arrayIndex):
将整个列表的元素复制到一个已存在的一维数组中,从指定的数组索引开始复制。string[] array = new string[myStringList.Count]; myStringList.CopyTo(array, 0); -
ToArray():
将列表的内容复制到一个新的数组中,并返回这个数组。string[] arrayFromList = myStringList.ToArray();
容量与计数
-
Capacity:
这是一个属性,用于获取或设置列表内部数据结构可以存储的总元素数。当列表的元素数量超过其容量时,它会自动扩容。int currentCapacity = myStringList.Capacity; // 获取当前容量 myStringList.Capacity = 100; // 设置新容量(注意:如果小于当前元素数量,可能会抛出异常) -
Count:
这是一个属性,用于获取列表中实际包含的元素数。int numberOfItems = myStringList.Count;
索引器与查找
-
Indexer (Item[int index]):
List<T>支持索引器,允许你通过索引直接访问或修改列表中的元素。string firstItem = myStringList[0]; // 访问第一个元素 myStringList[0] = "FirstItemModified"; // 修改第一个元素 -
IndexOf(T item):
搜索列表中指定的对象,并返回该对象的第一个匹配项的索引。如果没有找到对象,则返回 -1。int indexOfHello = myStringList.IndexOf("Hello"); -
LastIndexOf(T item):
与IndexOf方法类似,但它从列表的末尾开始搜索,并返回指定对象的最后一个匹配项的索引。int lastIndexOfHello = myStringList.LastIndexOf("Hello");
提取子列表
-
GetRange(int index, int count):
获取列表中从指定索引开始的指定数量的连续元素,并返回包含这些元素的新列表。List<string> subList = myStringList.GetRange(1, 2); // 从索引1开始获取2个元素
清理与效率
-
TrimExcess() 或 TrimToSize()(取决于.NET版本):
减少内部数组的容量以匹配列表中元素的数量。这有助于减少内存使用,但请注意,这并不减少Capacity属性的值(在TrimExcess的情况下),只是减少了内部数组的实际分配大小。在某些版本中,这个方法可能被命名为TrimToSize。myStringList.TrimExcess(); // 或 myStringList.TrimToSize(); 取决于.NET版本
相关文章:
C# List定义和常用方法
栏目总目录 List的定义 列表(List)是一种常用的集合类型,它属于System.Collections.Generic命名空间。列表是一个有序集合,可以包含重复的元素,并且可以根据索引访问元素。 List< T > List<T> 是一个泛…...
如何在实际应用中更好地利用字典功能提高开发效率?
在当今数字化浪潮汹涌澎湃、技术迭代日新月异的时代,企业和开发者们犹如在信息的海洋中航行,迫切需要高效便捷的开发工具来指引方向、加速前行。开发工具的优劣直接关系到项目的进度、质量以及最终的商业价值实现。在众多开发工具的功能模块中࿰…...
Windows 环境下 vscode 配置 C/C++ 环境
vscode Visual Studio Code(简称 VSCode)是一个由微软开发的免费、开源的代码编辑器。它支持多种编程语言,并提供了代码高亮、智能代码补全、代码重构、调试等功能,非常适合开发者使用。VSCode 通过安装扩展(Extension…...
[通信原理]绪论2:信息量 × 信息熵
我们知道信息是一个抽象的概念,它既不是物质也不是能量。那么我们要如何对一个抽象的概念进行一个定量的研究呢? 信息量 1、信息的度量 通信的本质是传递信息,为了定量表征信息的度量,引入信息量的概念。消息中所含信息量与其不…...
TCP套接字【网络】
文章目录 代码 创建套接字:(TCP/UDP) int socket(int domain, int type, int protocol);inet_aton,将字符串IP转换成整数IP int inet_aton(const char *cp, struct in_addr *inp);监听套接字:(TCP,服务器…...
【devops】devops-git之github使用
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...
GPT对话知识库——串口通信的数据的组成?起始位是高电平还是低电平?如何用代码在 FreeRTOS 中实现串口通信吗?如何处理串口通信中的数据帧校验吗?
目录 1,问: 1,答: 串口数据的组成 串口数据传输帧的完整结构 起始位的电平状态:低电平 举例:UART数据传输的例子 适用场景 总结 2,问: 2,答: a. 如…...
从头开始学MyBatis—02基于xml和注解分别实现的增删改查
首先介绍此次使用的数据库结构,然后引出注意事项。 通过基于xml和基于注解的方式分别实现了增删改查,还有获取参数值、返回值的不同类型对比,帮助大家一次性掌握两种代码编写能力。 目录 数据库 数据库表 实体类 对应的实体类如下&#x…...
AI音乐创作的新时代:从创意到旋律的智能化转型
文章目录 🎼 AI音乐创作的新时代:从创意到旋律的智能化转型1 AI在音乐创作中的应用1.1 AI如何生成音乐? 2 常见的AI音乐创作工具2.1 AIVA2.2 Ecrett Music2.3 Jukedeck 3 AI音乐创作的流程3.1 第一步:确定音乐风格和情感基调3.2 第…...
Spring Boot集成Akka remoting快速入门Demo
1.什么是Akka remoting? Akka-Remoting一种ActorSystem之间Actor对Actor点对点的沟通协议.通过Akka-Remoting来实现一个ActorSystem中的一个Actor与另一个ActorSystem中的另一个Actor之间的沟通 Akka Remoting限制: 不支持NAT(Network Add…...
JVM 调优篇7 调优案例1-堆空间的优化解决
一 jvm优化 1.1 优化实施步骤* 1)减少使用全局变量和大对象; 2)调整新生代的大小到最合适; 3)设置老年代的大小为最合适; 4)选择合适的GC收集器; 1.2 关于GC优化原则 多数的Java应用不需要在服务器上进行GC优化࿱…...
文件格式转换:EXCEL和CSV文件格式互相转换
目录 1.EXCEl和CSV文件格式互相转换1.1首先安装所需的Python包1.2excel转换为csv代码如下:1.3csv转换为excel代码如下:由于excel文件在数学建模数据处理当中的局限性,我们通常把excel文件转换为csv文件来处理,下面是相关的代码,我直接封装成函数,你们直接调用即可,我会添…...
基于协同过滤的北京森林公园推荐---附源码74454
摘要 本论文主要论述了如何基于协同过滤开发一个北京森林公园推荐,本系统将严格按照软件开发流程进行各个阶段的工作,通过爬虫技术对北京森林公园的景点信息数据进行爬取,面向对象编程思想进行项目开发。在引言中,作者将论述北京森…...
002 JavaClent操作RabbitMQ
Java Client操作RabbitMQ 文章目录 Java Client操作RabbitMQ1.pom依赖2.连接工具类3.简单模式4.工作队列模式(work)公平调度示例 5.发布/订阅模式(fanout)交换机绑定示例代码 6.路由模式(direct)7.Topic匹配…...
lablelme标注的数据转成YOLO v8 格式
1 labelme 转 yolov8 格式 import json import cv2 import numpy as np import os def json2yolo(path):# dic{N_shaoxi:0, N_qiaoqi:1, N_qiaojie:2, N_pianyi:3, N_yiwu: 4, \# NV_shaoxi: 5, NV_qiaoqi: 6, NV_qiaojie: 7, NV_pianyi: 8, NV_yiwu: 9,\# …...
【linux】cat 命令
cat 命令是 Linux 和 Unix 系统中非常基础且常用的一个命令,它的全称是 "concatenate" 的缩写,意为“连接”或“串联”。尽管名字听起来像是专门用于连接文件的,但 cat 命令的用途远不止于此。它主要用于查看、创建、合并文件内容&…...
速通sass基础语法
速通Sass语法: sass的特点: 由于css的缺陷:无法自定义变量,不可引用,嵌套等。sass/scss/less等css预处理器产生。以sass为例,引入了变量、嵌套、运算、混入(Mixin)、继承、颜色处理、函数等诸多功能。方便…...
Vue: watch5种监听情况
目录 一.watch的性质与作用 1.watch 的性质包括: 2.watch 常用于以下场景: 二.监视ref定义的基本类型数据 三.监视ref定义的对象类型数据 四.监视reactive定义的对象类型数据 五.监视ref或reactive定义的对象类型数据中的某个属性 六.监视上述的…...
Android 车联网——汽车系统介绍(附2)
汽车系统指的是由多个模块或组件组成的系统,如发动机系统、制动系统、空调系统等,这些系统通常由多个 ECU 协同工作来完成特定的任务。 一、汽车系统 1、防抱死制动系统 ABS(Anti-lock Braking System,防抱死制动系统)是一项重要的汽车安全技术,其主要功能是在车辆紧急…...
C++ 链表
基本用法 C++提供了list容器,这是一个双向链表,能高效进行数据添加和删除。 引入头文件 #include <iostream> #include <list> // 引入list头文件 using namespace std;创建和初始化 list...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题
20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起,为了跨网段推流,千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...
