C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
目录
1.使用动态数组(ArrayList):
2.使用 jagged array(不规则数组):
3.使用 List :
4.使用数组复制:
在C#中,数组的长度是固定的,一旦声明和初始化,就不能更改。但是,您可以使用其他集合类型,例如ArrayList或List<T>,这些类型可以动态调整大小以添加或删除元素。
1.使用动态数组(ArrayList):
动态数组是一种可以在运行时改变大小的数组。当你需要添加或删除元素时,它会自动调整自身的大小。
// 使用 ArrayList 可以动态调整数组的大小。
using System.Collections;namespace _106_8
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 初始化 ArrayListArrayList arrayList =[new int[] { 1, 2 },new int[] { 3, 4, 5 },new int[] { 6, 7, 8, 9 },];// 打印原始数组Console.WriteLine("原始数组:");PrintArray(arrayList);// 添加新行Console.WriteLine();// 动态调整数组大小arrayList.Capacity = 5;// 初始化新数组arrayList.Add(new int[] { 10, 11 });arrayList.Add(new int[] { 12, 13, 14 });// 打印调整大小后的数组Console.WriteLine("调整大小后的数组:");PrintArray(arrayList);}static void PrintArray(ArrayList array){foreach (var row in array){Console.Write("[" + string.Join(", ", (int[])row) + "]");Console.WriteLine();}}}
}
//运行结果:
/*
原始数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]调整大小后的数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]
[10, 11]
[12, 13, 14]*/
2.使用 jagged array(不规则数组):
jagged array 是一种数组的数组,它可以用来模拟可变大小的数组。jaggedArray 的大小是可变的,你可以根据需要改变它。
首先创建了一个 jagged array,并初始化了一些数据。然后,使用 ResizeArray 函数将 jaggedArray 的大小调整为 5,然后添加了一些新的数据。最后,使用 PrintArray 函数打印了调整大小后的数组。
注意,这种方法并不会真正改变 jagged array 中每个子数组的大小,而是通过创建一个新的 jagged array 来实现动态调整大小的效果。如果你需要在运行时真正地改变数组的大小,可以考虑使用其他数据结构,如动态数组(ArrayList)。
// 使用 jagged array(不规则数组)
// 可以实现动态调整数组大小的效果
namespace _106_7
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 初始化 jaggedArrayint[][] jaggedArray =[[1, 2],[3, 4, 5],[6, 7, 8, 9],];// 打印原始数组Console.WriteLine("原始数组:");PrintArray(jaggedArray);// 添加新行Console.WriteLine();// 动态调整数组大小jaggedArray = ResizeArray(jaggedArray, 5);// 初始化新数组jaggedArray[3] = [10, 11];jaggedArray[4] = [12, 13, 14];// 打印调整大小后的数组Console.WriteLine("调整大小后的数组:");PrintArray(jaggedArray);}static int[][] ResizeArray(int[][] jaggedArray, int newSize){int[][] newArray = new int[newSize][];Array.Copy(jaggedArray, newArray, Math.Min(jaggedArray.Length, newSize));return newArray;}static void PrintArray(int[][] array){foreach (var row in array){Console.Write("[" + string.Join(", ", row) + "]");Console.WriteLine();}}}
}
//运行结果:
/*
原始数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]调整大小后的数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]
[10, 11]
[12, 13, 14]*/
3.使用 List<T> :
使用 List<T> 也可以动态调整数组的大小。
首先创建了一个 List<int[]>,并初始化了一些数据。然后,使用 Capacity 属性将 List<int[]> 的大小调整为 5,然后添加了一些新的数据。最后,我们使用 PrintArray 函数打印了调整大小后的数组。
注意,这种方法会真正地改变 List<int[]> 中每个子数组的大小,因为它会动态地分配和释放内存。但是,由于 List<int[]> 是基于对象的,所以它比数组更慢,如果你需要更高的性能,可以考虑使用其他数据结构,如数组。
// 使用 List<T> 也可以动态调整数组的大小namespace _106_9
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 初始化 List<int[]>List<int[]> list =[[1, 2],[3, 4, 5],[6, 7, 8, 9],];// 打印原始数组Console.WriteLine("原始数组:");PrintArray(list);// 添加新行Console.WriteLine();// 动态调整数组大小list.Capacity = 5;// 初始化新数组list.Add([10, 11]);list.Add([12, 13, 14]);// 打印调整大小后的数组Console.WriteLine("调整大小后的数组:");PrintArray(list);}static void PrintArray(List<int[]> list){foreach (var row in list){Console.Write("[" + string.Join(", ", row) + "]");Console.WriteLine();}}}
}
//运行结果:
/*
原始数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]调整大小后的数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]
[10, 11]
[12, 13, 14]*/
4.使用数组复制:
创建一个新的数组,将旧数组的元素复制到新数组中,然后释放旧数组。这是一种比较低效的方法,但在某些情况下可能会有用。
// 复制旧数组并增加数组长度
namespace _106_7
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);int[] oldArray = new int[10];//... 初始化 oldArrayint[] newArray = new int[oldArray.Length * 2];Array.Copy(oldArray, newArray, oldArray.Length);int newlength = newArray.Length;Console.WriteLine("新数组长度= {0}", newlength);}}
}
//运行结果:
/*
新数组长度= 20*/
相关文章:
C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
目录 1.使用动态数组(ArrayList): 2.使用 jagged array(不规则数组): 3.使用 List : 4.使用数组复制: 在C#中,数组的长度是固定的,一旦声明和初始化&…...
3.1 Verilog 连续赋值
关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。: 格式如下 assign LHS_target RHS_expression ; LHS(left hand side) 指赋值操作…...
【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求
文章目录 一、Origin 含义二、跨源资源共享:**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests:预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…...
LangChain pdf的读取以及向量数据库的使用
以下使用了3399.pdf, Rockchip RK3399 TRM Part1 import ChatGLM from langchain.chains import LLMChain from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain.chains import Simp…...
VUE学习——事件修饰符
阻止默认事件 <template><a click"onClickHandle" href"https://www.baidu.com">baidu</a><a click.prevent"onClickHandle" href"https://www.baidu.com">baidu</a> </template> <script>…...
开放平台技术架构设计与实现的实战总结
开放平台是企业向外部开发者提供API接口和服务的平台,促进生态系统的建设和业务拓展。本文将介绍开放平台技术架构的设计原则和实现方法,帮助读者了解如何构建一个稳健、安全且易于扩展的开放平台。 1. 什么是开放平台? - 解释了开放平台…...
飞桨自然语言处理框架 paddlenlp的 trainer
飞桨(PaddlePaddle)的NLP库PaddleNLP中的Trainer类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer类简化了训练过程,提供了自动的批处理、模型保存、日志记录等特性。 以下是Trainer类的主要参数…...
SQL世界之命令语句Ⅲ
目录 一、SQL JOIN 1.JOIN 和 Key 2.使用 JOIN 3.不同的 SQL JOIN 二、SQL INNER JOIN 关键字 1.SQL INNER JOIN 关键字 2.INNER JOIN 关键字语法 3.内连接(INNER JOIN)实例 三、SQL LEFT JOIN 关键字 1.SQL LEFT JOIN 关键字 2.LEFT JOIN 关…...
Snoop Version 2 Packet Capture File Format
RFC1761 - Snoop Version 2 Packet Capture File Format, FEBRUARY 1995 本备忘录的状态 本备忘录为互联网社区提供帮助信息。 本备忘录不作为任何类型的互联网标准。 本备忘录的分发不受限制。 Status of this Memo This memo provides information for the Internet communit…...
扩展说明: 指令微调 Llama 2
这篇博客是一篇来自 Meta AI,关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集,有了它,我们则可以使用自己的指令来微调 Llama 2 基础模型。 目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是,模型如…...
VUE 全局设置防重复点击
请求后端防止重复点击,用户点击加入遮罩层,请求完毕关闭遮罩层 我们利用请求拦截器,在用户点击的时候,弹出遮罩层 本文采用i18n国际化 element plus UI,提取你想要的,这里不做简化 完整代码如下…...
备战蓝桥杯---动态规划(基础1)
先看几道比较简单的题: 直接f[i][j]f[i-1][j]f[i][j-1]即可(注意有马的地方赋值为0) 下面是递推循环方式实现的AC代码: #include<bits/stdc.h> using namespace std; #define int long long int a[30][30]; int n,m,x,y; …...
CVE-2018-19518 漏洞复现
CVE-2018-19518 漏洞介绍 IMAP协议(因特网消息访问协议)它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。它运行在TCP/IP协议之上,使用的端口是143。在php中调用的是imap_open函数。 PHP 的…...
Python爬虫实战:抓取猫眼电影排行榜top100#4
爬虫专栏系列:http://t.csdnimg.cn/Oiun0 抓取猫眼电影排行 本节中,我们利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。requests 比 urllib 使用更加方便,而且目前我们还没有系统学习 HTML 解析库,所以这里就…...
Fiddler抓包工具之fiddler界面工具栏介绍
Fiddler界面工具栏介绍 (1)WinConfig:windows 使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在 fiddler中点击 WinConfig 按钮可以解除这个诅咒,这个与菜单栏 Tools→Win8 Loopback…...
LabVIEW工业监控系统
LabVIEW工业监控系统 介绍了一个基于LabVIEW软件开发的工业监控系统。系统通过虚拟测控技术和先进的数据处理能力,实现对工业过程的高效监控,提升系统的自动化和智能化水平,从而满足现代工业对高效率、高稳定性和低成本的需求。 随着工业自…...
Linux 文件连接:符号链接与硬链接
Linux 文件连接:符号链接与硬链接 介绍 在 Linux 系统中,文件连接是一个强大的概念,它允许我们在文件系统中创建引用,从而使得文件和目录之间产生联系。在本文中,我们将深入探讨两种主要类型的文件连接:符…...
数据分类分级
一段时间没写文章了,最近做政府数据治理方面的项目,数据治理一个重要的内容是数据安全,会涉及数据的分类分级,是数据治理的基础。 随着“十四五”规划推行,数据要素概念与意识全面铺开,国家、政府机构、企业…...
第三十天| 51. N皇后
Leetcode 51. N皇后 题目链接:51 N皇后 题干:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整…...
pythn-scipy 查漏补缺
1. 2. 3. 4. 5. 6. 7. 8. 9. 偏度 skewness,峰度 kurtosis...
Windows外接显示器亮度控制终极指南:使用Twinkle Tray轻松解决Windows系统限制
Windows外接显示器亮度控制终极指南:使用Twinkle Tray轻松解决Windows系统限制 【免费下载链接】twinkle-tray Easily manage the brightness of your monitors in Windows from the system tray 项目地址: https://gitcode.com/gh_mirrors/tw/twinkle-tray …...
小微团队如何利用 Taotoken 统一管理多个 AI 模型密钥与用量
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 小微团队如何利用 Taotoken 统一管理多个 AI 模型密钥与用量 对于小型开发或产品团队而言,在项目开发中集成多个大语言…...
长期使用Taotoken聚合API对项目开发效率的实际影响
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken聚合API对项目开发效率的实际影响 在为期数月的项目开发周期中,我们团队将Taotoken作为所有大模型调用…...
Miniblink49:如何在5分钟内将浏览器内核嵌入你的C++应用?
Miniblink49:如何在5分钟内将浏览器内核嵌入你的C应用? 【免费下载链接】miniblink49 a lighter, faster browser kernel of blink to integrate HTML UI in your app. 一个小巧、轻量的浏览器内核,用来取代wke和libcef 项目地址: https://…...
AI代码生成安全审查:实时检测与防范AI助手引入的安全漏洞
1. 项目概述:当AI生成代码遇上安全审查最近在搞一个内部项目,团队里开始大规模用GitHub Copilot、Cursor这类AI编码助手来提效。效率是上去了,但几次代码Review下来,我发现了一个让人后背发凉的问题:AI生成的代码里&am…...
如何掌握Node.js模块系统:Node.js-Design-Patterns-Third-Edition深度解析
如何掌握Node.js模块系统:Node.js-Design-Patterns-Third-Edition深度解析 【免费下载链接】Node.js-Design-Patterns-Third-Edition Node.js Design Patterns Third Edition, published by Packt 项目地址: https://gitcode.com/gh_mirrors/no/Node.js-Design-Pa…...
Vue 3侧边栏菜单完整指南:快速构建现代化管理后台导航系统
Vue 3侧边栏菜单完整指南:快速构建现代化管理后台导航系统 【免费下载链接】vue-sidebar-menu A Vue.js Sidebar Menu Component 项目地址: https://gitcode.com/gh_mirrors/vu/vue-sidebar-menu 在Vue.js生态中,Vue侧边栏菜单组件(vu…...
别熬大夜改 PPT 了!Paperxie AI PPT,一键搞定毕业论文答辩
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 论文终稿刚定稿,答辩 PPT 的空白页面就开始让人焦虑。打开 PowerPoint,对着 “新建幻灯片” 发愣&am…...
Cursor AI编程助手优化:成本控制与效率提升实战指南
1. 项目概述:一个为开发者“减负”的智能工具最近在GitHub上看到一个挺有意思的项目,叫vlinr/cursor-freeload。光看名字,可能很多朋友会心一笑,尤其是那些深度依赖AI编程助手的朋友。没错,这个项目就是围绕当下非常流…...
03-eMMC性能实战解析:速率模式、引脚配置与上电时序的协同设计
1. eMMC高速模式实战:HS400与HS200的带宽对决 在嵌入式系统设计中,eMMC存储的性能直接影响设备响应速度和用户体验。实测数据显示,三星KLMCG2KETM-B041芯片在HS400模式下能达到269.4MB/s的读取速度,而东芝THGBMDG5D1LBAIL同模式下…...
