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

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的定义 列表&#xff08;List&#xff09;是一种常用的集合类型&#xff0c;它属于System.Collections.Generic命名空间。列表是一个有序集合&#xff0c;可以包含重复的元素&#xff0c;并且可以根据索引访问元素。 List< T > List<T> 是一个泛…...

如何在实际应用中更好地利用字典功能提高开发效率?

在当今数字化浪潮汹涌澎湃、技术迭代日新月异的时代&#xff0c;企业和开发者们犹如在信息的海洋中航行&#xff0c;迫切需要高效便捷的开发工具来指引方向、加速前行。开发工具的优劣直接关系到项目的进度、质量以及最终的商业价值实现。在众多开发工具的功能模块中&#xff0…...

Windows 环境下 vscode 配置 C/C++ 环境

vscode Visual Studio Code&#xff08;简称 VSCode&#xff09;是一个由微软开发的免费、开源的代码编辑器。它支持多种编程语言&#xff0c;并提供了代码高亮、智能代码补全、代码重构、调试等功能&#xff0c;非常适合开发者使用。VSCode 通过安装扩展&#xff08;Extension…...

[通信原理]绪论2:信息量 × 信息熵

我们知道信息是一个抽象的概念&#xff0c;它既不是物质也不是能量。那么我们要如何对一个抽象的概念进行一个定量的研究呢&#xff1f; 信息量 1、信息的度量 通信的本质是传递信息&#xff0c;为了定量表征信息的度量&#xff0c;引入信息量的概念。消息中所含信息量与其不…...

TCP套接字【网络】

文章目录 代码 创建套接字&#xff1a;&#xff08;TCP/UDP) int socket(int domain, int type, int protocol);inet_aton&#xff0c;将字符串IP转换成整数IP int inet_aton(const char *cp, struct in_addr *inp);监听套接字&#xff1a;&#xff08;TCP&#xff0c;服务器…...

【devops】devops-git之github使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

GPT对话知识库——串口通信的数据的组成?起始位是高电平还是低电平?如何用代码在 FreeRTOS 中实现串口通信吗?如何处理串口通信中的数据帧校验吗?

目录 1&#xff0c;问&#xff1a; 1&#xff0c;答&#xff1a; 串口数据的组成 串口数据传输帧的完整结构 起始位的电平状态&#xff1a;低电平 举例&#xff1a;UART数据传输的例子 适用场景 总结 2&#xff0c;问&#xff1a; 2&#xff0c;答&#xff1a; a. 如…...

从头开始学MyBatis—02基于xml和注解分别实现的增删改查

首先介绍此次使用的数据库结构&#xff0c;然后引出注意事项。 通过基于xml和基于注解的方式分别实现了增删改查&#xff0c;还有获取参数值、返回值的不同类型对比&#xff0c;帮助大家一次性掌握两种代码编写能力。 目录 数据库 数据库表 实体类 对应的实体类如下&#x…...

AI音乐创作的新时代:从创意到旋律的智能化转型

文章目录 &#x1f3bc; AI音乐创作的新时代&#xff1a;从创意到旋律的智能化转型1 AI在音乐创作中的应用1.1 AI如何生成音乐&#xff1f; 2 常见的AI音乐创作工具2.1 AIVA2.2 Ecrett Music2.3 Jukedeck 3 AI音乐创作的流程3.1 第一步&#xff1a;确定音乐风格和情感基调3.2 第…...

Spring Boot集成Akka remoting快速入门Demo

1.什么是Akka remoting&#xff1f; Akka-Remoting一种ActorSystem之间Actor对Actor点对点的沟通协议.通过Akka-Remoting来实现一个ActorSystem中的一个Actor与另一个ActorSystem中的另一个Actor之间的沟通 Akka Remoting限制&#xff1a; 不支持NAT&#xff08;Network Add…...

JVM 调优篇7 调优案例1-堆空间的优化解决

一 jvm优化 1.1 优化实施步骤* 1)减少使用全局变量和大对象&#xff1b; 2)调整新生代的大小到最合适&#xff1b; 3)设置老年代的大小为最合适&#xff1b; 4)选择合适的GC收集器&#xff1b; 1.2 关于GC优化原则 多数的Java应用不需要在服务器上进行GC优化&#xff1…...

文件格式转换:EXCEL和CSV文件格式互相转换

目录 1.EXCEl和CSV文件格式互相转换1.1首先安装所需的Python包1.2excel转换为csv代码如下:1.3csv转换为excel代码如下:由于excel文件在数学建模数据处理当中的局限性,我们通常把excel文件转换为csv文件来处理,下面是相关的代码,我直接封装成函数,你们直接调用即可,我会添…...

基于协同过滤的北京森林公园推荐---附源码74454

摘要 本论文主要论述了如何基于协同过滤开发一个北京森林公园推荐&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;通过爬虫技术对北京森林公园的景点信息数据进行爬取&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述北京森…...

002 JavaClent操作RabbitMQ

Java Client操作RabbitMQ 文章目录 Java Client操作RabbitMQ1.pom依赖2.连接工具类3.简单模式4.工作队列模式&#xff08;work&#xff09;公平调度示例 5.发布/订阅模式&#xff08;fanout&#xff09;交换机绑定示例代码 6.路由模式&#xff08;direct&#xff09;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 系统中非常基础且常用的一个命令&#xff0c;它的全称是 "concatenate" 的缩写&#xff0c;意为“连接”或“串联”。尽管名字听起来像是专门用于连接文件的&#xff0c;但 cat 命令的用途远不止于此。它主要用于查看、创建、合并文件内容&…...

速通sass基础语法

速通Sass语法&#xff1a; sass的特点&#xff1a; 由于css的缺陷&#xff1a;无法自定义变量&#xff0c;不可引用&#xff0c;嵌套等。sass/scss/less等css预处理器产生。以sass为例&#xff0c;引入了变量、嵌套、运算、混入(Mixin)、继承、颜色处理、函数等诸多功能。方便…...

Vue: watch5种监听情况

目录 一.watch的性质与作用 1.watch 的性质包括&#xff1a; 2.watch 常用于以下场景&#xff1a; 二.监视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...

中国初创公司数量下降了98%

近年来&#xff0c;中国风险投资市场的风云变幻&#xff0c;通过IT Juzi&#xff08;IT桔子&#xff09;等权威数据服务提供商的透镜&#xff0c;得以清晰展现。数据显示&#xff0c;自2018年的鼎盛时期——拥有51,302家初创公司以来&#xff0c;这一数字在短短五年内急剧下降至…...

【SSRF漏洞】——http协议常见绕过

改变的确很难&#xff0c;但结果值得冒险 本文如有错误之处&#xff0c;还请各位师傅指正 一.ssrf概述 SSRF全称为Server-side Request Fogery,中文含义服务器端请求伪造 SSRF是一种由攻击者构造形成由目标服务端发起请求的一个安全漏洞。一般情况下&#xff0c;SSRF攻击的目标…...

[网络][CISCO]CISCO_华为网络设备端口镜像配置

CISCO 华为网络设备端口镜像配置大全 isco交换机通常支持2组镜像&#xff0c;4000系列有支持6组镜象的。支持所全端口镜像。 Cisco catylist2820 有2个菜单选项 先进入menu选项&#xff0c;enable port monitor 进入cli模式&#xff0c; en conf term interface fast0/…...

第二十五章 添加数字签名

文章目录 第二十五章 添加数字签名数字签名概述添加数字签名 第二十五章 添加数字签名 本主题介绍如何向 IRIS Web 服务和 Web 客户端发送的 SOAP 消息添加数字签名。 通常&#xff0c;会同时执行加密和签名。为简单起见&#xff0c;本主题仅介绍签名。有关结合加密和签名的信…...

GHOST重装后DEF盘数据救援指南

一、现象解析&#xff1a;GHOST重装后的DEF盘失踪之谜 在计算机维护的日常中&#xff0c;GHOST重装因其快速便捷的特点&#xff0c;成为众多用户解决系统问题的首选方法。然而&#xff0c;这一操作虽能迅速恢复系统至初始状态&#xff0c;却也暗藏风险&#xff0c;尤其是当不慎…...

使用blender快速制作metahuman面部以及身体绑定教程

【metablriger教程】使用blender一键绑定自定义角色metahuman绑定并导入UE5引擎教程_哔哩哔哩_bilibili 目前市面上的制作metahuman绑定的工具大多是maya的&#xff0c;metablriger是一个帮助用户快速制作metahuman绑定的blender插件&#xff0c;可以平替市面上已有的metahuma…...

OpenHarmony鸿蒙( Beta5.0)智能窗户通风设备开发详解

鸿蒙开发往期必看&#xff1a; 一分钟了解”纯血版&#xff01;鸿蒙HarmonyOS Next应用开发&#xff01; “非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路…...

pandas 将多条记录整合成一条记录,每条记录的year和month字段组成新的字段名

你可以使用 Pandas 的 pivot_table() 或 groupby() 方法&#xff0c;将多条记录整合成一条&#xff0c;并通过 year 和 month 这两个字段生成新的字段名。具体的实现方法是通过 pivot_table() 将 year 和 month 作为列标签&#xff0c;将其他列中的数据进行整合。 假设你的数据…...

C# 中的多线程同步:原子变量、原子操作、内存顺序和可见性

C# 中的多线程同步&#xff1a;原子变量、原子操作、内存顺序和可见性 引言 随着现代计算机系统的发展&#xff0c;多核处理器已经变得非常普遍。在这种环境下&#xff0c;多线程编程成为提高应用程序性能的关键技术之一。然而&#xff0c;多线程编程带来了新的挑战&#xff…...

视图(mysql)

一、什么是视图 视图是⼀个虚拟的表&#xff0c;它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数 据&#xff0c;⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管 理。视图本⾝并不占⽤物理存储空间&#xff0c;它仅…...