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

C#初级——List 容器

容器

在C#中,容器通常指的是用于存储和组织数据的集合类。

本文介绍的容器是动态数组List<T>  内部使用数组来存储元素,当添加元素超出当前数组容量时,会自动调整大小(扩容)。

list容器 

List<>是 C# 中的泛型集合容器,全称为 List<T>,其中 <T> 表示类型参数,允许你指定存储在列表中的元素的类型。List<T> 提供了丰富的方法和属性来操作集合中的元素,包括添加、删除和搜索等。

创建List列表

List<要存放的数据类型> List列表名 = new List<要存放的数据类型>();

List<int> listNum = new List<int>();

List基本操作

添加元素 Add()

            listNum.Add(1);listNum.Add(2);listNum.Add(3);listNum.Add(4);listNum.Add(5);listNum.Add(5);

通过 Add 方法,将内容存储到List中去。

获取容器大小 Count

            int count = listNum.Count; Console.WriteLine(count);    //6

访问元素 [索引]

容器名称[索引] 

            Console.WriteLine(listNum[1]);    //2

遍历元素 for和foreach

数组的两种遍历方式在List的遍历中同样适用。

            for (int i = 0; i < listNum.Count; i++){Console.WriteLine(listNum[i]);}foreach (int _num in listNum){Console.WriteLine(_num);}

 检查元素是否存在 Contains()

Contains()是一个布尔类型的方法,当相关内容存在时,返回true,不存在时,返回false。

            //包含if (listNum.Contains(1)){Console.WriteLine("包含1");}

拷贝元素 GetRange()

GetRange(i , j)是将一个List列表从第 i 位开始,拷贝 j 个元素到新的List列表上的方法。

下面展示将列表全拷贝到新的列表上面。

            List<int> listTemp = listNum.GetRange(0, listNum.Count);foreach (int _num in listTemp){Console.WriteLine(_num);}

索引查找元素 Index()

返回第一个找到的item索引,如果没有找到就返回-1。

            int Index1 = listNum.IndexOf(5);

移除元素

移除在x位上的元素 RemoveAt(x)

            listNum.RemoveAt(1);        //移除在第n位上的元素foreach (int _num in listNum){Console.WriteLine(_num);}

从第x个开始,移除y个 RemoveRange(x, y)

            listNum.RemoveRange(1, 2);  //从第几个开始,移除几个foreach (int _num in listNum){Console.WriteLine(_num);}

清除值为x的元素 Remove(x)

            listNum.Remove(4);for (int i = listNum.Count; i > 0; i--){if (listNum[i] == 5){listNum.RemoveAt(i);}}for (int i = 0; i < listNum.Count; i++){Console.WriteLine(listNum[i]);}

 清除所有的元素 Clear()

            listNum.Clear();            //清除所有的元素Console.WriteLine(listNum.Count);    //0

转变数组 ToArray()

            int[] arrNum = listNum.ToArray();   //转换为数组for (int i = 0; i < arrNum.Length; i++){Console.WriteLine(arrNum[i]);}

其他

Remove() 倒序循环问题

因为list是一个动态数组,并且会在Remove移除当前的元素之后改变数组大小,然后进行i++。这样就漏检查一个元素,万一这个元素也是想要移除的,就得再执行一次移除,这样很麻烦,所以,倒序循环就能规避这一点,元素一消除,索引发生改变,但是 i 之前的索引没有发生改变,所以,i 能完美的遍历所有的元素。

原本的正序循环也可以改进,将 i++ 放在else当中,当元素被移除时,i 不实现自加1操作就可以了。 

            listNum.Remove(4);for (int i = 0; i < listNum.Count;){if (listNum[i] == 5){listNum.RemoveAt(i);}else{i++;}}for (int i = listNum.Count; i > 0; i--){if (listNum[i] == 5){listNum.RemoveAt(i);}}

哈希值

哈希值通常指的是通过哈希函数对数据(如字符串或数字)进行处理后得到的一个固定长度的数值,这个数值通常用于快速比较和检索数据。

            int num = 5;int hashCode = num.GetHashCode();Console.WriteLine(hashCode);Console.WriteLine(listNum.GetHashCode());

相关文章:

C#初级——List 容器

容器 在C#中&#xff0c;容器通常指的是用于存储和组织数据的集合类。 本文介绍的容器是动态数组&#xff1a;List<T> 内部使用数组来存储元素&#xff0c;当添加元素超出当前数组容量时&#xff0c;会自动调整大小&#xff08;扩容&#xff09;。 list容器 List<&g…...

serial靶机教程

靶机下载地址 https://download.vulnhub.com/serial/serial.zip 主机发现 arp-scan -l 端口扫描 nmap 192.168.229.131 -A 根据对⽐可知serial的⼀个ip地址为192.168.47.143 该靶机开启了22端⼝和80端⼝ 对⽹站进⾏⼀个访问&#xff0c;⼤概意思为这是对新的cookie处理程序…...

【Linux-MISC设备】

目录 1. MISC设备2. MISC蜂鸣器实验 1. MISC设备 MISC设备的主设备号为10.MISC设备会自动创建cdev&#xff0c;不需要再手动创建。MISC设备是基于platform的. MISC驱动的编写的核心就是初始化miscdevice结构体变量&#xff0c;然后用misc_register函数向内核注册&#xff0c;…...

【随笔】VRRP+MSTP

虚拟路由冗余协议&#xff08;Virtual Router Redundancy Protocol&#xff0c;VRRP&#xff09; 设计采用主备模式&#xff0c;将VRRP组内多个路由设备都映射为一个虚拟路由设备。 一个VRRP组中只能由一台处于主控角色的路由器&#xff0c;可以有一个或多个备份角色的路由器。…...

vue 动态增删行,并form表单校验(附v2\v3)

Vue3 组件用的 ant 可以换成你们用&#xff0c;主要是form校验 前端代码 <a-formref"formRef":model"formData":label-col-props"{ span: 5 }":wrapper-col-props"{ span: 17 }"><a-row><a-form-itemlabel"角色…...

计算机网络的基本概念

IP地址&#xff08;Internet Protocol Address&#xff09;是指在计算机网络中每个设备的唯一标识符。它用于区分不同设备并在网络中进行数据包的路由。我们平常所使用的IP地址主要版本&#xff1a; IPv4 格式: 由四个整数&#xff08;0到255&#xff09;组成&#xff0c;以点…...

Python 爬虫项目实战三:GitHub 用户信息抓取与分析

一、项目背景 爬虫技术不仅限于获取网页内容&#xff0c;还可以用于获取和分析特定网站的用户信息。本文将演示如何使用Python编写爬虫程序&#xff0c;从GitHub网站抓取用户信息&#xff0c;并进行简单的数据分析。 二、环境准备 在开始之前&#xff0c;请确保你已经安装了…...

xtrabackup搭建MySQL 8.0 主从复制

xtrabackup搭建MySQL 8.0 主从复制 安装MySQL 8.0.37安装xtrabackupGTIDs初始化从库参考&#xff1a;GTID概述GTID相较与传统复制的优势GTID自身存在哪些限制GTID工作原理简单介绍如何开启GTID复制GTID与传统模式建立复制时候语句的不同点传统复制GTID复制 GTID同步状态简单解析…...

Java程序员接单分享

作为一名Java程序员&#xff0c;这阵子通过承接些小型项目&#xff0c;我顺利跨过了月薪破万的门槛。这些项目虽小&#xff0c;却如同磨刀石般&#xff0c;让我在实战中发现了自身技术栈的棱角与不足&#xff0c;尤其是意识到了在Java这一浩瀚技术海洋中的诸多未知领域。我深知…...

【HarmonyOS NEXT星河版开发学习】小型测试案例01-今日头条置顶练习

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面 ​ 前言 本系列可能是博客首发&#xff0c;鸿蒙开发星河版是一个全新的版本&#xff0c;由于参考视频较少鸿蒙开发不被重视导致csdn上面并没有全套的学习路线&#xff0c;…...

C语言----计算开机时间

计算开机时间 实例说明 编程实现计算开机时间&#xff0c;要求在每次开始计算开机时间时都能接着上次记录的结果向下记录。 实现过程&#xff1a; 1. 在TC中创建一个C文件。 2. 引用头文件&#xff0c;代码如下: #include <stdio.h> 3. 定义结构体time&#xff0c;用来…...

批发行业进销存-登录适配 android 横竖屏幕 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、横竖屏切换的意义 以下是移动端横屏竖屏可切换在进销存中的一些重要应用&#xff1a; a、数据录入与查看 在录入商品信息、库存数量等大量数据时&#xff0c;横屏模式可以提供更宽阔的输入区域&#xff0c;减少输入错误。例如&#xff0c;在输入长串的商品编码或详细的商…...

js功能(1)

1、readonly 应用于元素&#xff1a;readonly 可以应用于 <input> 和 <textarea> 元素。 用户界面表现&#xff1a;当元素设置为 readonly 时&#xff0c;用户不能更改输入框中的值&#xff0c;但可以选中和复制文本&#xff0c;且表单包含该输入字段的值可以被提交…...

微信小程序乡村医疗系统,源码、部署+讲解

目录 摘 要 Abstract 1 绪论 1.1 研究背景及意义 1.2 研究现状 1.3 研究内容 2 相关技术介绍 2.1 Java 语言 2.2 MySQL 数据库 2.3 Spring Boot 框架 2.4 B/S 结构 2.5 微信小程序 3 系统分析 3.1 可行性分析 3.1.1 经济可行性 3.1.2 技术可行性…...

完美解决pip命令版本冲突导致对应版本模块包无法安装的问题

解决步骤 使用pip更新/降低指定模块包命令格式降低pip自身至指定版本的命令再次换源安装指定模块包 在对 FasterNet 这篇论文源码复现过程中&#xff0c;我们首先需要安装相关依赖文件&#xff08; path/to/your/requirements.txt&#xff09; -extra-index-url https://down…...

5.1-软件工程基础知识-软件工程概述

软件工程诞生原因 了解 早期的软件&#xff1a;主要是指采用个体工作方式实现的程序。第一次软件危机&#xff1a;20世纪60年代中期 典型表现有软件质量低下、项目无法如期完成、项目严重超支等因为软件而导致的重大事故时有发生。 软件工程的诞生&#xff1a;1968年在NATO会…...

极简聊天室-websocket版

再写一个极简聊天室的websocket版&#xff0c;在本例中&#xff0c;websocket仅用于服务器向客户端传输信息&#xff0c;客户端向服务器发送信息是传统的http post方式&#xff0c;用axios来实现的&#xff0c;当然websocket本身是支持双向通信&#xff0c;主要是为了方便跟前面…...

QT学生管理系统 开发文档

目录 第一章 UI界面设计与开发 登录界面 主界面 UI美化 第二章 数据库设计与开发 数据库设计 连接数据库 数据库功能设计 sql语句设计 查询所有学生数量 查询第几页学生数据 删除学生 修改学生信息 清空学生表 添加单个用户 删除单个用户 修改用户权限 查询所有用户…...

【五大海内外高校支持】2024年数字经济与计算机科学国际学术会议(DECS2024)

大会官网&#xff1a;www.icdecs.net 大会时间&#xff1a;2024年9月20-22日 大会地点&#xff1a;中国-厦门 截稿日期&#xff1a;详情见官网 支持单位 马来西亚理工大学 北京科技大学经济管理学院 南京信息工程大学 马来西亚敦胡先翁大学 大会嘉宾 大会主席 罗航…...

VS项目打包成lib库并使用

一、新建一个静态库项目 一般要把项目设为Release模式 二、添加文件 将所需要打包的头文件、源文件添加到该静态库项目中 三、生成项目 生成成功后即可在Release文件夹出现找到相应的.lib文件 四、使用静态库 将静态库文件复制到项目文件夹中&#xff0c;然后在项目属性设…...

面向2026,AI Agent Harness 最小化设计指南与实践思考

2026年&#xff0c;AI Agent领域最热门的词汇无疑是“Harness”。打开行业社群、技术博客&#xff0c;随处可见“今天你Harness了吗”的调侃与讨论&#xff0c;但热闹背后&#xff0c;是对这个概念的普遍误解与滥用。过去两三年&#xff0c;AI Agent领域迎来爆发式增长&#xf…...

【常见开发问题】SQL注入示例及防范措施介绍

SQL注入示例及防范措施介绍 文章目录 SQL注入示例及防范措施介绍 一、SQL注入简介 二、SQL防注入方法 三、总结 一、SQL注入简介 SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句传递给Web服务器,进而传给数据库服务器以执行数据库命令。其根本原因…...

Claude Mythos Preview 模型强到不敢公开,是真的吗?

Claude Mythos Preview 模型官方安全与能力报告&#xff08;Anthropic 2026年4月7日&#xff09; 本文为Anthropic公司2026年4月7日发布的Claude Mythos Preview模型官方安全与能力报告&#xff0c;也是人类目前最顶级的大模型之一的完整技术与风险说明书。 一、一句话定位 …...

Phi-3-vision-128k-instruct代码生成辅助:将UI设计稿截图转换为前端代码描述

Phi-3-vision-128k-instruct代码生成辅助&#xff1a;将UI设计稿截图转换为前端代码描述 1. 引言&#xff1a;设计稿转代码的痛点与解决方案 每次拿到设计师发来的Figma或Sketch文件&#xff0c;前端开发者都要面对一个耗时的工作&#xff1a;把视觉设计转化为可运行的代码。…...

【多模态大模型——跨越感知与认知的鸿沟】7.2 视觉表达SFT(Visual Expression SFT)

目录 第7章 视觉指令微调与数据工程 7.2.1 视觉表达SFT阶段的定义与目标 7.2.1.1 复杂视觉信号到结构化token的映射 7.2.1.2 图像合成、区域检测、视觉推理的统一框架 7.2.1.3 思维链稳定性与过拟合抑制 7.2.2 参数高效微调策略 7.2.2.1 视觉编码器的分层解冻策略 7.2.…...

OpenClaw技能扩展教程:Qwen3-14b_int4_awq实现公众号自动发布

OpenClaw技能扩展教程&#xff1a;Qwen3-14b_int4_awq实现公众号自动发布 1. 为什么需要自动化公众号发布 作为一个技术博主&#xff0c;我每周都要在公众号上发布2-3篇技术文章。最让我头疼的不是写作本身&#xff0c;而是发布前的繁琐流程&#xff1a;手动排版Markdown、设…...

Idiap研究院:让语音识别AI学会聆听对话历史,压缩音频记忆

语音识别技术在我们的生活中越来越常见&#xff0c;从手机语音助手到客服电话&#xff0c;从会议记录到智能搜索。但你有没有想过&#xff0c;为什么这些系统有时候会犯一些很明显的错误&#xff1f;比如当你在和语音助手对话时&#xff0c;明明在前一句话中提到了"张三&q…...

实时行情系统设计:从协议选择到高可用架构,再到数据源选型睬

一、核心问题及解决方案&#xff08;按踩坑频率排序&#xff09; 问题 1&#xff1a;误删他人持有锁——最基础也最易犯的漏洞 成因&#xff1a;释放锁时未做身份校验&#xff0c;直接执行 DEL 命令删除键。典型场景&#xff1a;服务 A 持有锁后&#xff0c;业务逻辑耗时超过锁…...

用可逆数据结构实现 Harness 的无损回滚

用可逆数据结构实现 Harness 的无损回滚 1. 引入与连接:在复杂部署系统中寻找安全网 1.1 一个运维工程师的不眠之夜 2023年某个周五的晚上,9点37分,电商平台"SmoothShop"的CI/CD负责人张磊正准备关机下班,期待着即将到来的周末。突然,监控系统的警报声响彻整…...

嵌入式真有效值计算库:Irms_calc高精度电流测量方案

1. Irms_calc库概述&#xff1a;面向嵌入式平台的高精度交流电流有效值计算引擎Irms_calc是一个专为ESP8266、ESP32及Arduino兼容平台设计的轻量级、高鲁棒性交流电流有效值&#xff08;Irms&#xff09;计算库。其核心目标并非简单地对ADC采样值做数学平均&#xff0c;而是构建…...