C#向数组指定索引位置插入新的元素值:自定义插入方法 vs List<T>.Add(T) 方法

目录

一、使用的方法

1.自定义插入方法 

2.使用List.Add(T) 方法

二、实例

1.示例1:List.Add(T) 方法

2.示例:自定义插入方法


一、使用的方法

1.自定义插入方法 

        首先需要定义一个一维数组,然后修改数组的长度(这里使用Length属性获取数组的长度,然后加1,作为新数组的长度),从而在其中增加一个元素。只有增加了数组的长度以后才能在这个数组中增加新的元素。

2.使用List<T>.Add(T) 方法

        关于 List<T>.Add(T) 定义,详见本文作者写的其他文章,C#用Array类的FindAll方法和List<T>类的Add方法按关键词在数组中检索元素并输出-CSDN博客  https://wenchm.blog.csdn.net/article/details/136032895

        首先,创建一个与原始数组大小相同的动态数组(例如,List<T>)。然后,将原始数组的元素复制到动态数组中,直到到达要插入元素的索引位置。在动态数组中插入新元素。将原始数组中剩余的元素复制到动态数组中。最后,将动态数组转换回数组并返回。

二、实例

1.示例1:List<T>.Add(T) 方法

// 将一个元素插入到现有数组的指定索引位置,
// 并将原来位于该位置的元素向后移动namespace _095_1
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);int[] originalArray = [1, 2, 3, 4, 5];int elementToInsert = 10;int indexToInsert = 2;int[] newArray = InsertElement(originalArray, elementToInsert, indexToInsert);Console.WriteLine(string.Join(", ", newArray));}static int[] InsertElement(int[] originalArray, int elementToInsert, int indexToInsert){List<int> dynamicArray = new(originalArray.Length);// Copy elements from original array to dynamic array until the insertion indexfor (int i = 0; i < indexToInsert; i++){dynamicArray.Add(originalArray[i]);}// Insert the element at the specified indexdynamicArray.Add(elementToInsert);// Copy remaining elements from original array to dynamic arrayfor (int i = indexToInsert; i < originalArray.Length; i++){dynamicArray.Add(originalArray[i]);}// Convert dynamic array to a new array and returnreturn [.. dynamicArray];}}
}
//运行结果:
/*
1, 2, 10, 3, 4, 5*/

2.示例:自定义插入方法

//在既有数组中的指定位置插入一个新的元素,
//并遍历输出新数组
namespace _095
{public partial class Form1 : Form{private Button? button1;private Button? button2;private Label? label1;private Label? label2;private TextBox? textBox1;private TextBox? textBox2;private RichTextBox? richTextBox1;private Label? label3;private TextBox? textBox3;private int[] int_array = new int[8];public Form1(){InitializeComponent();StartPosition = FormStartPosition.CenterScreen;Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // button1// button1 = new Button{Location = new Point(12, 9),Name = "button1",Size = new Size(75, 23),TabIndex = 0,Text = "生成数组",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // button2// button2 = new Button{Location = new Point(224, 36),Name = "button2",Size = new Size(43, 23),TabIndex = 1,Text = "确定",UseVisualStyleBackColor = true};            button2.Click += Button2_Click;// // label1// label1 = new Label{AutoSize = true,Location = new Point(12, 42),Name = "label1",Size = new Size(56, 17),TabIndex = 2,Text = "插入索引"};// // label2// label2 = new Label{AutoSize = true,Location = new Point(12, 69),Name = "label2",Size = new Size(56, 17),TabIndex = 3,Text = "新数组:"};// // textBox1// textBox1 = new TextBox{Location = new Point(93, 9),Name = "textBox1",Size = new Size(174, 23),TabIndex = 4};// // textBox2// textBox2 = new TextBox{Location = new Point(73, 36),Name = "textBox2",Size = new Size(40, 23),TabIndex = 5};          // // richTextBox1// richTextBox1 = new RichTextBox{Location = new Point(12, 90),Name = "richTextBox1",Size = new Size(254, 44),TabIndex = 6,Text = ""};// // label3// label3 = new Label{AutoSize = true,Location = new Point(118, 42),Name = "label3",Size = new Size(56, 17),TabIndex = 7,Text = "插入元素"};// // textBox3// textBox3 = new TextBox{Location = new Point(179, 36),Name = "textBox3",Size = new Size(40, 23),TabIndex = 8};// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(279, 146);Controls.Add(textBox3);Controls.Add(label3);Controls.Add(richTextBox1);Controls.Add(textBox2);Controls.Add(textBox1);Controls.Add(label2);Controls.Add(label1);Controls.Add(button2);Controls.Add(button1);Name = "Form1";Text = "在数组中添加一个元素";}/// <summary>/// 生成数组事件/// 遍历生成整形数组,并遍历输出/// </summary>private void Button1_Click(object? sender, EventArgs e){textBox1!.Clear();for (int i = 0; i < int_array.GetUpperBound(0) + 1; i++){int_array[i] = i;}for (int i = 0; i < int_array.GetUpperBound(0) + 1; i++){textBox1.Text += int_array[i] + " ";}}/// <summary>/// 确定插入事件/// 在生成的数组索引=4的位置插入一个元素,并遍历输出/// 这个事件不仅调用AddArray方法,更是在调用该方法之后改变了数组的大小/// </summary>private void Button2_Click(object? sender, EventArgs e){richTextBox1!.Clear();if ((textBox2!.Text != "")&& (textBox3!.Text !="")&& (textBox3!.Text.Length == 1)){int_array = AddArray(int_array, Convert.ToInt32(textBox2!.Text), Convert.ToInt32(textBox3!.Text));for (int i = 0; i < int_array.GetUpperBound(0) + 1; i++){richTextBox1.Text += int_array[i] + " ";}}else{MessageBox.Show("输入信息不能为空且元素长度恒为1", "提示");}}/// <summary>/// 向数组中插入单个元素的方法/// </summary>/// <param name="ArrayBorn">要向其中添加元素的一维数组</param>/// <param name="Index">添加索引</param>/// <param name="Value">添加值</param>/// <returns></returns>static int[] AddArray(int[] ArrayBorn, int Index, int Value){if (Index >= ArrayBorn.Length)Index = ArrayBorn.Length - 1;int[] TemArray = new int[ArrayBorn.Length + 1];//声明一个新的数组for (int i = 0; i < TemArray.Length; i++){if (Index >= 0){if (i < (Index))        //判断遍历到的索引是否小于添加索引加1TemArray[i] = ArrayBorn[i];else if (i == (Index))//判断遍历到的索引是否等于添加索引加1TemArray[i] = Value;elseTemArray[i] = ArrayBorn[i - 1];}else{if (i == 0)//数组首位置TemArray[i] = Value;elseTemArray[i] = ArrayBorn[i - 1];}}return TemArray;}}
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/256933.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[计算机网络]---网络编程套接字

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、基础知识…

黑马程序员微信小程序学习总结7.工具脚本、自定义组件、data和properties的区别

目录 工具脚本&#xff08;utils中的wxs&#xff09;自定义组件组件的引用方式局部引用全局引用组件和页面的区别组件样式隔离data数据组件method事件处理函数自定义组件添加属性 data和properties的区别使用setData修改properties的值 工具脚本&#xff08;utils中的wxs&#…

基于java后台的微信校园教室图书馆座位预约小程序系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

电商小程序07显示用户个人信息

目录 1 全局变量2 控制登录按钮显示3 设置布局4 搭建我的页面5 修改个人信息总结 在登录章节我们已经实现了用户名和密码登录首页的功能&#xff0c;在登录之后&#xff0c;可以切换到我的页面&#xff0c;显示用户的头像和名称&#xff0c;可以修改个人信息。本篇我们介绍一下…

腾讯云游戏联机服务器配置价格表,4核16G/8核32G/4核32G/16核64G

2024年更新腾讯云游戏联机服务器配置价格表&#xff0c;可用于搭建幻兽帕鲁、雾锁王国等游戏服务器&#xff0c;游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置&#xff0c;可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

【MySQL】:分组查询、排序查询、分页查询、以及执行顺序

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 分组查询1.1 语法1.2 where与having区别1.3 注意事项:1.4 案例: 二. 排序查询…

ClickHouse--04--数据库引擎、Log 系列表引擎、 Special 系列表引擎

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.数据库引擎1.1 Ordinary 默认数据库引擎1.2 MySQL 数据库引擎MySQL 引擎语法字段类型的映射 2.ClickHouse 表引擎3.Log 系列表引擎几种 Log 表引擎的共性是&#…

项目02《游戏-10-开发》Unity3D

【完成本集功能后共享1-10集整套代码】 基于 项目02《游戏-09-开发》Unity3D &#xff0c; 任务&#xff1a;传送至其他场景&#xff0c; 首先在场景中加入传送门&#xff0c; 设置人物标签&#xff0c; using UnityEngine; using UnityEngine.SceneManagement; u…

调用讯飞火星AI大模型WebAPI

调用讯飞火星AI大模型 记录一次调用讯飞AI大模型的过程 官方文档 首先&#xff0c;去官网申请资格&#xff0c;获得必要秘钥等 再编写url&#xff0c;该url存在编码要求&#xff0c;具体看官网url编写 具体代码如下&#xff1a; getWebsocketUrl() {return new Promise((resol…

腾讯云4核8G服务器多少钱?646元一年零3个月

腾讯云服务器4核8G配置优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云百科txybk.com分…

Pytorch的可视化

1 使用 wandb进行可视化训练过程 本文章将从wandb的安装、wandb的使用、demo的演示进行讲解。 1.1 如何安装wandb&#xff1f; wandb的安装比较简单&#xff0c;在终端中执行如下的命令即可&#xff1a; pip install wandb在安装完成之后&#xff0c;我们需要&#xff0c;去…

Springboot拦截器中跨域失效的问题、同一个接口传入参数不同,一个成功,一个有跨域问题、拦截器和@CrossOrigin和@Controller

Springboot拦截器中跨域失效的问题 一、概述 1、具体场景 起因&#xff1a; 同一个接口&#xff0c;传入不同参数进行值的修改时&#xff0c;一个成功&#xff0c;另一个竟然失败&#xff0c;而且是跨域问题拦截器内的request参数调用getHeader方法时&#xff0c;获取不到前端…

如何写好一个简历

如何编写求职简历 论Java程序员求职中简历的重要性 好简历的作用 在求职过程中&#xff0c;一份好的简历是非常重要的&#xff0c;它甚至可以直接决定能否被面试官认可。一份出色或者说是成功的个人简历&#xff0c;最根本的作用是能让看这份简历的人产生一定要见你的强烈愿…

Idea Git Review插件

idea git plugin 添加了一些常用的小插件 可以右键打开git bash窗口 可以右键选中文字点击baidu fanyi 可以通过搜索git用户名 指定开始时间查询某个版本自己提交的所有代码文件 可以通过点击蓝色行数&#xff0c;跳转到指定的改动代码块 资源地址&#xff1a; git-pl…

伦敦金是现货黄金吗?

伦敦金属现货黄金交易的一种形式。投资者可以通过伦敦金市场直接买卖黄金&#xff0c;以实现投资收益。伦敦金市场具有高度流动性和透明度&#xff0c;是全球投资者广泛参与的贵金属交易市场之一。 什么是现货黄金&#xff1f; 现货黄金是指实物黄金的交易&#xff0c;投资者可…

C/C++模板初阶

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.1 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int&…

百面嵌入式专栏(面试题)驱动开发面试题汇总 2.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍驱动开发面试题 。 1、Linux系统的组成部分? Linux内核、Linux文件系统、Linux shell、Linux应用程序。 2、Linux内核的组成部分? (1)第一种分类方式:内存管理子系统、进程管理子系统、文件管理子系…

[C#]winform制作仪表盘好用的表盘控件和使用方法

【仪表盘一般创建流程】 在C#中制作仪表盘文案&#xff08;通常指仪表盘上的文本、数字或指标显示&#xff09;涉及到使用图形用户界面&#xff08;GUI&#xff09;组件&#xff0c;比如Windows Forms、WPF (Windows Presentation Foundation) 或 ASP.NET 等。以下是一个使用W…

【上海大学数字逻辑实验报告】七、中规模元件及综合设计

一、实验目的 掌握中规模时序元件的测试。学会在Quartus II上设计序列发生器。 二、实验原理 74LS161是四位可预置数二进制加计数器&#xff0c;采用16引脚双列直插式封装的中规模集成电路&#xff0c;其外形如下图所示&#xff1a; 其各引脚功能为&#xff1a; 异步复位输…