C#系统学习第七章——数组

基于立创开源ESP32步进电机驱动板硬件设计与优化实践 本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。 阅读详情

前言

        在 C# 编程的广阔领域中,数组就像是一座有序的数据仓库,它以高效、规整的方式存储和管理大量同类型数据。从一维数组的线性排列,到二维数组的行列矩阵,再到复杂的数组操作与经典排序算法,数组的应用贯穿于数据处理、算法实现等多个关键环节。无论是批量处理业务数据,还是构建复杂的数据模型,掌握数组的使用技巧都是程序员进阶之路上的必修课。接下来,就让我们一同开启数组知识的探索之旅,揭开其高效存储与灵活处理数据的奥秘。


7.1 一维数组

7.1.1 数组概述

        数组是具有相同数据类型的一组数据的集合。

        数组中的变量称为数组的元素。

        数组能够容纳元素的数量称为数组的长度。

        数组中的每个元素都具有唯一的索引与其相对应,索引从0开始。

7.1.2 一维数组的创建

一维数组的创建是一组相同类型数据的线性结合。

数组作为对象允许使用new关键字进行内存空间分配。

在使用数组之前,必须定义数组变量所属的类型。

1.先声明,再用new 关键字进行内存空间分配

数组元素类型[] 数组名字;
数组名字=new 数组元素类型[数组元素个数];

注意:使用new时,证书类型数组各个元素的初始值都是0。

2.声明的同时为数组分配内存空间

        将数组的声明和内存空间分配配合在一起。

数组元素类型[] 数组名 =new 数组元素类型[数组元素的个数];

7.1.3 一维数组的初始化

        初始化分为两种:为单个数组元素赋值和同时为整个数组赋值。

1.为单个数组元素赋值

        首先声明一个数组,并指定长度,然后为数组中每个元素赋值。

int [] array=new int[5];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[4]=5;

或者利用循环单个赋值:

int [] array=new int[5];
for(int i=0;i<arr.Length;i++)
{
    arr[i]=i+1;
}

Length:用来获取数组的长度

2.同时为整个数组赋值

        需要使用大括号,将要赋值的数据括起来并用逗号隔开。

string [] arrstr=new string[7] {"1","2","3","4","5","6","7"};

        或者如下:

string [] arrstr=new string[] {"1","2","3","4","5","6","7"};

        或者:

string [] arrstr={"1","2","3","4","5","6","7"};

后两种方法:会自动计算数组的长度。


7.2 二维数组

7.2.1 二维数组的创建

        二维数组常用于表示二维表,表中的信息以行和列的形式表示,第一个下标代表元素所在的行,第二个下标代表元素所在的列。

声明格式如下:

type[,] arrayName
type[] [] arrayname

type:二维数组的数据类型

arrayName:二维数组的名称

1.直接每一维分配内存空间

int [,] a=new int [3,4];//定义了一个3行4列的int类型二维数组

2.分别为每一维分配内存空间

int [][] a=new int [2] [];
a[0]=new int [2];//初始化第一行有2个元素
a[1]=new int [3];//初始化第二行有3个元素

7.2.2 二位数组的初始化

1.为单个二维数组元素赋值

        首先定义一个二维数组,并指定行数和列数,然后为二维数组中的每个元素赋值。

int [,] arr=new int [2,2];
arr[0,0]=0;
arr[0,1]=1;
arr[1,0]=1;
arr[1,1]=2;

2.为每一维数组元素赋值

        首先需要使用“数组元素类型 [ ] [ ]”声明一个数组,并指定数组的行数,然后赋值。

int [,] arr=new int [2,2]{{1,2},{0,0}};

        或者:

int [,] arr=new int[,]{{1,1},{0,0}};

        或者:

int [,] arr={{1,1},{0,0}};

后两种方法会自动子算数组的行数和列数。

7.2.3 不规则数组的定义

int [] [] arr=new int [3] [];
a[0]=new int [1];
a[1]=new int [2];
a[2]=new int [3];

7.2.4获取二维数组的列数

        原理:利用Length属性。把二维数组的每一维当做一维数组,利用length获取一维数组的长度。


7.3 数组与Array类

        C#中的数组由System.Arrray类派生而来的引用对象。关系图如下:

Array类的常用方法及说明:


7.4 数组的基本操作

7.4.1 数组的输入和输出

        数组的输入与输出指的是对不同维数的数组进行输入和输出操作。可以用for实现。

1.一维数组的输入与输出

        一般使用单层循环实现:

int [] arr=new int[5]{1,2,3,4,5};
for(int i=0;i<arr.length;i++)
{
    console。write(arr[i]+" ");
}

2.二维数组的输入与输出

        一般使用双层循环语句实现。

int [,] arr=new int[3,3]{{1,2,3},{1,2,3},{1,2,3}};
for(int i=0;i<arr.length;i++)
    for(int j=0;j<arr[i].length;j++)
    {   
        console.write(arr[i][j]+" ");
    }

7.4.2 使用foreach语句遍历数组

        该语句可以用来遍历集合中的每个元素,而数组也属于集合类型,因此foreach可以遍历数组。

语法:

foreach ([类型] [迭代变量名] in [集合])
{
    语句
}

注意:

        (1)【类型】 【迭代变量名】用于声明迭代变量,迭代变量相当于一个范围覆盖整个语句块的局部变量,在foreach语句执行期间,迭代变量表示当前正在为其执行迭代的集合元素;

        (2)【集合】必须有一个从该集合的元素类型到迭代变量的类型的显式转换;如果集合的值为null,则会出现异常。

        (3)foreach语句通常用来遍历集合,而数组也是一种简单的集合。

7.4.3 对数组进行排序

1.Sort方法

        Array.Sort方法:对一维Array数组中的元素进行排序。(默认是从小到大排序)

public static void Sort(Array array)
public static void Sort(Array array,int index,int length)

        array:要排序的移位array数组。

        index:排序范围的起始索引。

        lenth:排序范围内的元素数。

2.Reverse方法

        Array.Reverse方法:用于反转一维Array数组中元素的顺序。

public static void Reverse(Array array)
public static void Reverse(Array array,int index.int length)

        array:要反转的一维数组。

        index:要反转的起始索引。

        length:要反转的部分中的元素数。


7.5 数组排序方法

7.5.1 冒泡排序算法

        它排序数组元素的过程总是小数往前放,大数往后发放。

1.基本思想        

        比较相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动数组后面。

2.计算过程

       (1) 双层循环实现。

        (2)外层循环用于控制排序轮数,一般是要排序的数组的长度减1次,因为最后一次循环只剩下一个数组元素,不需要比较,这时已经排序完成了。

        (3)内存循环主要用于比较数组中每个邻近元素的大小,以确定是否交换位置。

排序过程如下:

3.流程图

7.5.2 选择排序算法

        该方法比冒泡排序算法快,也是常用的。

1.基本思想

        将指定排序位置与其他数组元素分别进行比较没如果满足条件就交换元素值。

        与冒泡排序算法相比交换次数少很多,因此速度快。

2.计算过程

        (1)每一轮从待排序的数据元素中选出最小(或最大)的一个元素,按排序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

       (2)排序过程如下:

3.流程图


结尾

        C# 中的数组,凭借丰富的创建、初始化方式,多样的操作方法以及经典的排序算法,为数据处理提供了强大而灵活的解决方案。从基础的数组声明到复杂的多维数组应用,从简单的遍历操作到高效的排序实现,每一部分知识都紧密关联,共同构建起数组应用的完整体系。熟练掌握这些内容,不仅能让我们在编程时更高效地处理数据,还能为解决复杂问题提供清晰的思路。希望大家在后续的编程实践中,不断运用数组知识,挖掘其更多潜力,创造出更优质的代码!若在学习过程中有任何疑问或新发现,欢迎随时交流分享。

从UE4到Unity:双叶高光技术在角色皮肤渲染中的移植全流程 本文详细解析了将UE4中的双叶高光技术移植到Unity引擎的全流程。该技术通过模拟皮肤油脂层和真皮层的不同反射特性,能显著提升角色皮肤渲染的真实感。文章从核心原理、贴图资产处理、Shader代码重构到参数调校,提供了完整的跨引擎移植实战指南,帮助开发者实现高质量的皮肤质感还原。 阅读详情

相关推荐

OptiSystem仿真:波分与时分复用混合光网络的设计与性能优化

本文详细介绍了如何利用OptiSystem软件设计与优化波分复用与时分复用混合光网络。通过构建四路波分乘以四路时分的系统模型,文章阐述了从信源生成、复用合并、光纤传输到信号解复用与性能评估的全流程,并重点探讨了对抗色散、优化器件参数及探索高级调制格式等核心性能优化策略,为应对未来海量数据需求提供了高效、可行的仿真解决方案。

pink的博客 1106

C#中的数组

一.数组简介 数组是一种数据结构,它包含若干相同类型的变量。数组是使用类型声明的: 数组具有以下属性: 数组从字面上理解就是存放一组数,但在 C# 语言中数组存放的并不一定是 数字,也可以是其他数据类型。 一个变量只能存放一个值,如果需要计算 10 个变量中的最大值,则需要定 义 10 个变 量,非常麻烦。 数组的索引从零开始:具有 n 个元素的数组的索引是从 0 到 n-1。 数组元素可以是任何类型,包括数组类型。 在一个数组中存放的值都是同一数据类型的,并且可以通过循环以及数据操 作的方法对

weixin_57765394的博客 2万+

Verilog除法器(32位无符号+带符号)

32位无符号除法器设计 恢复余数法: 恢复余数除法的基本思路是从“部分余数”中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0. 寄存器使用: reg_r 存放被除数a reg_b 存放除数b reg_r 存放余数(初始清零) 具体做法: 做减法时,减数是reg_b中的除数,被减数是reg_r中的余数左移一位,最低位由reg_q(被除数)的最高位补充。为了能够判断相减结果的正...

qq_38600065的博客 1万+

C#教程7:数组

数组是数据的集合。标量变量一次只能保存一项。数组可以容纳多个项目。这些项目称为数组的元素。数组存储相同数据类型的数据。每个元素都可以通过索引来引用。数组是从零开始的。第一个元素的索引为零。数组是引用类型。

gongdiwudu的专栏 1万+

硬件-电源-智能保护:eFuse选型与实战设计全攻略

本文深入解析eFuse在硬件电源设计中的关键作用与实战选型技巧。作为智能保护器件,eFuse能提供毫安级精度的过流保护、多重故障防护和智能恢复功能,比传统保险丝快1000倍以上。文章详细介绍了eFuse的工作原理、五大选型维度和PCB布局要点,帮助工程师有效预防电源异常导致的硬件损坏,适用于AI服务器、工业控制等场景。

weixin_30879169的博客 200

树莓派通过TTL3.3转485 Modbus采集水表

所需道具 树莓派0,我用的是树莓派zero wh; 具有光电直读功能的有线水表,我用的是咸鱼淘的埃美柯LXSY-20E1; TTL3.3 转 485模块,带隔离的贵些; 5V转12V升压模块。 原理 树莓派有UART(GPIO14 Tx 和 GPIO15 Rx)串口通讯功能,电器特性是3.3V TTL,直读远传水表支持M-Bus/485通讯接口,我买的光电直读水表485要求12V供电(根据仪表厂家说明书)。TTL和485虽然都是串口通讯,但电器特性不一样,不能直接接!我已经烧掉一个树莓派...

xhydongda的博客 3441

C#精挑整理知识要点6 数组(建议收藏)

1.C#数组简介 数组从字面上理解就是存放一组数,但在 C# 语言中数组存放的并不一定是数字,也可以是其他数据类型。 数组的特点: 在一个数组中存放的值都是同一数据类型的。 数组中某个指定的元素是通过索引来访问的。 所有的数组都是由连续的内存位置组成的。 数组从零开始建立索引,即数组索引从零开始。 2.一维数组 一维数组在数组中最常用,即将一组值存放到一个数组中,并为其定义一个名称,通过数组中元素的位置来存取值 语法: //定义数组 数据类型[] 数组名; //初始化数组中的元素 数据类型[] 数组名 =

Mr、黄 702

STM32驱动WS2812B实现音乐频谱可视化系统

本文详细介绍了基于STM32驱动WS2812B灯带实现音乐频谱可视化系统的设计与实现。通过FFT算法实时分析音频信号,将频谱映射到炫彩灯光控制系统,结合PWM和DMA技术实现低延迟响应。系统支持多模式切换和动态亮度调节,适用于创意灯光秀和智能家居场景。

weixin_29171129的博客 301

C# 数组

当需要存储多个相同类型的元素时,C# 数组是一种非常常用的数据结构。数组是一种固定长度的数据结构,它由连续的内存单元组成,每个内存单元存储一个元素。

江江的博客 4386

C#面试题及详细答案120道(61-75)-- 多线程与异步

本文摘要了前后端面试题中关于线程与并发的核心知识点,包括线程与进程的区别(61题)、Thread/ThreadPool/Task的对比(62题)、线程安全实现方法(63题)、lock关键字的原理(64题)、Monitor类的进阶用法(65题)以及死锁的成因与避免(66题)。通过C#代码示例和表格对比,清晰展示了多线程编程的关键概念、应用场景及常见问题解决方案,适合开发者快速掌握面试高频考点。完整内容可访问专栏目录获取更多技术面试题解析。

大剑师兰特的GIS世界 1429

某招标公告网和vcaptcha验证码识别逆向

本文分析了某验证码系统的加密流程及破解思路。首先通过反混淆技术定位到加密函数,拆解了包含指纹函数、环境参数等组成的加密字符串。研究发现验证码生成涉及canvas指纹、环境检测等反爬机制,可通过模拟浏览器环境绕过。验证过程需要解密图片顺序,通过work2.js计算还原图片位置,再结合滑动轨迹、时间等参数生成验证请求。文章仅提供技术研究思路,强调需遵守法律法规,严禁非法破解信息系统。完整流程包括环境模拟、加密参数还原、图片处理和轨迹生成等步骤,成功率较高。

码王吴彦祖的博客 577

C# 编程学习手册(一)

C#是一种通用的、多范式的编程语言,结合了面向对象、命令式、泛型、函数式、声明式和动态编程。在发布后不久,C#就成为开发人员编写各种类型应用程序的首选之一。虽然它不是唯一针对 CLI 的语言(其他语言包括 VB.NET 和 F#),但它是编写桌面、Web、云和移动平台的.NET 应用程序的首选语言。多年来,这种语言逐渐而稳定地发展。尽管最初它是一种面向对象的编程语言,但新版本已经将这种语言开放到了新的范式,比如泛型、函数式和动态编程。新的语言特性和更简洁的语法也定期添加进来。随着它作为.NET 编译器平台(

龙哥盟 1247

SIMULINK开发项目实例 1000 例专栏之第847例--基于飞行控制与稳定性的场景实例:多旋翼无人机在风扰动下的稳定性分析

本文介绍了使用Simulink进行多旋翼无人机风扰动稳定性分析的完整流程。首先建立包含动力学模型、控制系统和环境模拟三大模块的仿真系统,其中动力学模型基于牛顿-欧拉方程,控制系统采用PID调节器。重点展示了MATLAB函数实现的风扰动模型和姿态控制算法,通过设置输入信号和输出显示模块完成闭环仿真。最后通过多次风速条件下的仿真测试评估控制系统的抗干扰能力和稳定性表现,为无人机控制系统设计提供了有效的仿真验证方法。

xiaoheshang_123的博客 321

【C#基础学习】第七章、变量和常量

本章如题,主讲变量和常量。

Hoghst_debug的博客 273

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# 七天学习手册(一)

原文:zh.annas-archive.org/md5/2057FAEAB3B9AE161438DDC8A687CA7E 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 学习一门新语言或转换到完全不同的技术是行业的常见需求。作为学生,一个人应该使自己跟上市场趋势,作为专业人士,一个人应该了解新技术带来的新事物。为了满足这一需求,有很多书籍长达数千页,旨在成为 C#编程语言的全面参考。 这本书完全不同,是为了让那些对 C#语言有基本了解的人,或者是专业人士,正在使用其他语言但想要转换的人学习 C#

龙哥盟 1380

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C#学习日志(4)

今天差一点忘了写。 今天看完了第七章和第八章,第七章讲的数组、集合和哈希表,第八章讲的面向对象 数组在C和C++中都学过,都差不多,主要是ArrayList集合的使用还有Hashtable的使用; 面向对象也差不多 感觉这本书叫《C#开发实战宝典》有些错误,应该叫《C#从

@的博客 498

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C# 和 Unity 2021 游戏开发学习手册(一)

Unity 是世界上最受欢迎的游戏引擎之一,迎合业余爱好者、专业 AAA 工作室和电影制作公司。虽然以其用作 3D 工具而闻名,但 Unity 拥有一系列专门功能,支持从 2D 游戏和虚拟现实到后期制作和跨平台发布的一切。开发人员喜欢它的拖放界面和内置功能,但正是编写自定义 C#脚本以实现行为和游戏机制的能力真正使 Unity 脱颖而出。学习编写 C#代码对于已经掌握其他语言的经验丰富的程序员来说可能并不是一个巨大的障碍,但对于那些没有编程经验的人来说可能是令人望而却步的。

龙哥盟 963

C#学习笔记(八)——第七章:面向对象编程(一)

博文适用于编程小白,基于《叩响C#之门》,传送门:链接:https://pan.baidu.com/s/1y2UegjDUJz-xrOQu3qKMjQ 密码:4v2n 《叩响C#之门》通俗易懂,又不失专业性,比传统的《C#入门经典》《C#从入门到精通》这类书好的多,是一本不可多得的好教材。 C#学习笔记(一)——第一章:初识编程 C#学习笔记(二)——第二章:变量 C#学习笔记(三)...

lllxxq141592654的博客 2950

C# Unity 2021 游戏开发学习指南(一)

Unity 是世界上最受欢迎的游戏引擎之一,服务于业余爱好者、专业 AAA 工作室和电影制作公司。虽然 Unity 因其作为 3D 工具的使用而闻名,但它有一系列专门的功能,支持从 2D 游戏和虚拟现实到后期制作和跨平台发布的所有内容。开发者喜欢它的拖放界面和内置功能,但真正让 Unity 更进一步的是能够编写自定义 C#脚本以实现行为和游戏机制的能力。对于有其他语言经验的资深程序员来说,学习编写 C#代码可能不是巨大的障碍,但对于没有编程经验的你来说,可能会感到有些令人畏惧。这正是本书的用武之地,因为我将

龙哥盟 1165

C#专题-导读:C#语言学习纲要

在ASP专题完成之际,本人接下来将对现在流行的语言C#组织一个专题。这个专题分成上下篇二大部分。    第一部分为C#语言学习    第二部分为C#.NET网络核心编程。    敬请大家与我共同学习,一起进步。另外,由于本人也是初开始讲授这门课,如有什么不到位的地方,还请大家指正。以下为C#语言学习纲要:第一章C#介绍1.1 C#简介http://softbbs.pconline.com.cn/9

思多雅天行健 638

C#学习笔记(六)——第五章:枚举、结构体和数组(还没写好)

博文适用于编程小白,基于《叩响C#之门》,传送门:链接:https://pan.baidu.com/s/1y2UegjDUJz-xrOQu3qKMjQ 密码:4v2n 《叩响C#之门》通俗易懂,又不失专业性,比传统的《C#入门经典》《C#从入门到精通》这类书好的多,是一本不可多得的好教材。 C#学习笔记(一)——第一章:初识编程 C#学习笔记(二)——第二章:变量 C#学习笔记(三)...

lllxxq141592654的博客 481

《Visual C#从入门到精通》个人学习整理

该文章是本人自己阅读并学习了《Visual C#从入门到精通》(第九版)之后进行的整理和总结 对个人认为重点的知识点进行了概括总结,帮助自己学习C#,分享出来希望能对读者有所帮助,也让自己进步 一定会存在各种漏洞欢迎指出! 目录: 第七章:类和对象 第八章:值和引用 第九章:枚举和结构 第十章:数组 第十一章:理解参数数组 第十二章:继承 第十三章:接口和抽象类 第十四章:垃圾回收和资源管理 第十五章:属性 第十六章:索引器 第十七章:泛型 未完待续。。。 类和对象 7

qq_41746379的博客 1544

C#学习笔记

C#学习笔记

xfeng20的博客 275

C# 学习笔记2 - 理解C#语言

Part II Understanding the C# Language In this part: Creating and Managing Classes and Objects Understanding Values and References  Creating Value Types with Enumerations and Structures Using Arr...

Flyingfish 634

C#入门学习笔记(一):hello world与学习大纲

引子: 自16年冬入行开始,不知不觉已经度过三年多的时光。这系列文章一来是为了回忆知识点,二来也是为了帮助更多的同学感受编程的乐趣。 由于个人现在主要用C#进行游戏开发,不是用VS来进行开发。所以在这系列文章中,调试都是用VS控制台程序。 如下 打开之后,我们可以看到如下代码,分别用大括号包裹三层,分别为命名空间、类和方法,我们程序主要在方法里面运行。 我们可以在...

Tel17610887670的博客 600
上一篇: C#系统学习第六章——循环语句
下一篇: C#系统学习第八章——字符串
Unity黑马王子
博客等级 码龄4年 1846粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值