C#基础(3)一维数组

2024-09-04 15:44

本文主要是介绍C#基础(3)一维数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

我们先前已经进行了枚举的学习,但其实枚举相对来说,设计到的计算逻辑比较少,大多数时候都是和switch一起进行分支判断,而且屏幕前的你应该也发现了,这玩意儿其实更多就是一个编码规范的学习。

但今天我们要开始学习的数组:一维数组,多维数组,交错数组,这些在你日后的算法学习中也会经常出现。

所以希望大家跟紧我的脚步,把这个知识点理解透彻。

数组有很多作用,以下是其中一些常见的作用:

  1. 存储和访问数据:数组可以用来存储一组数据项,并且可以通过索引来访问和操作这些数据项。数组的索引从0开始,可以直接访问数组中的任意一个元素。

  2. 快速查找:由于数组中的元素是按照固定位置存储的,因此可以通过索引快速定位到需要的元素,从而实现快速的查找操作。

  3. 排序和搜索:可以使用数组来实现排序和搜索算法,例如冒泡排序、快速排序、二分搜索等。

  4. 存储多个对象:数组可以存储多个对象,例如存储一组学生对象或者一组商品对象。

  5. 传递参数:可以将数组作为参数传递给函数或方法,以便在不同的上下文中共享和处理数据。

  6. 实现其他数据结构:许多其他数据结构,如栈、队列、链表等,都可以通过数组来实现。

总而言之,数组是一种非常基础且常用的数据结构,它可以在编程中起到很多方面的作用,使得数据的存储、操作和处理更加方便和高效。

基本概念

数组是存储异族相同类型数据的集合,而在实际开发中,一维数组简称为数组。

数组的声明

数组的声明本身有很多种形式,这里博主就带大家一起了解一下。

1.变量类型【】 数组名

int[] arr1;//相当于没有实际占用空间,只是声明了一个变量,具体存储多少和存储了什么并不知道

2.变量类型【】数组名=new 变量类型【数组长度】

int[] arr2=new int[5];//相当于用零占用了五个空间

这里如果声明了长度,c#会默认放0去实现占位,这也是计算机识别空间的一种手段,如果什么都不放,计算机怎么知道这里面有几个东西,又有多长呢。

3.变量类型【】数组名=new 变量类型【数组长度】{内容1,内容2...}

int[] arr3=new int[5]{1,2,3,4,5};

这种方式,其实相当于就是决定了空间中占位的元素,这个元素必须要和前面类型保持一致。

4.变量类型【】数组名=new 变量类型【】{内容1,内容2...}

int[] arr4=new int[]{1,2,3,4,};

这种写法其实就是让后面的元素来决定这个数组存储的长度,相当于第三种写法的一种省略。

5.变量类型【】数组名={内容1,内容2...}

int[] arr5={1,2,3}

显然,这是最方便的一种写法,也是比较常用的写法。

看完这五种写法,想毕你应该已经知道数组如何声明了,这些东西还是希望大家要牢记,基础一直都是重中之重。

接下来我们就来讲怎么用它

数组的使用

用它,就要先得到它。

获取数组的长度

Console.Writeline(arr.Length);

关键字:数组名.Length

获取数组中的具体元素

Console.Writeline(arr[0]);

[数字],我们一般叫下标,里面的数字就是索引。

数组的下标和索引是用来标识和访问数组中元素的方式。

数组下标是从0开始的整数,用来表示数组中元素的位置。例如,对于一个有5个元素的数组,它们的下标分别是0, 1, 2, 3, 4。通过使用数组下标,我们可以根据下标的值来访问数组中的元素,比如数组名[下标]的方式。

数组索引是用来表示数组中元素相对于数组起始位置的偏移量。索引也是从0开始的,和下标的概念是一样的。通过使用数组索引,可以像下标一样来访问数组中的元素,也就是数组名[索引]的方式。

所以,语法为:数组名[索引值]。

修改元素

直接赋值即可

arr[0]=99;

遍历数组(for循环)

下面是一个使用for循环遍历数组示例:

using System;class Program
{static void Main(string[] args){// 创建一个整数数组int[] numbers = { 1, 2, 3, 4, 5 };// 使用for循环遍历数组for (int i = 0; i < numbers.Length; i++){Console.WriteLine(numbers[i]);}}
}

以上代码创建了一个整数数组 numbers,然后使用 for 循环遍历数组并将数组元素打印到控制台上。输出结果将会是:

1
2
3
4
5

 其实遍历不难,因为一维数组本身思考量并不高。

增加和删除元素

重点:c#中数组初始化以后是不能够直接添加新的元素的!

所以我们增加元素的根本就是,用一个新数组去替换旧的数组

using System;class Program
{static void Main(string[] args){// 创建两个个整数数组int[] arr1 = new int[5] { 1,2,3,4,5};int[] arr2 = new int[6] ;// 使用for循环遍历数组for (int i = 0; i < arr1.Length; i++){arr2[i] = arr1[i];}arr1 = arr2;arr1[5] = 3;for (int i = 0; i < arr1.Length; i++){Console.WriteLine(arr1[i]);}}
}

你可能会疑惑,博主,这不是麻烦了吗?我直接用一个新数组存储了旧数组,然后再加一个元素不是一样的吗?当然,你是对的,但是这也体现的我们开头说的原则。博主这里带着你这样绕着弯子写的目的其实就是让你感受一下我刚刚提到的重点。

那你既然体验了增加元素是如何运作的,删除其实也是一样的道理,只是是用更短的数组去存储罢了。

查找指定元素

其实你到这里应该也能想到具体如何操作,其实就是配合if进行。

这里不说废话,我们直接进例子。

using System;class Program
{static void Main(string[] args){// 创建一个整数数组int[] arr1 = new int[5] { 1,2,3,4,5};int a =3//创建一个目标值// 使用for循环遍历数组for (int i = 0; i < arr1.Length; i++){if(arr1[i]==a){Console.Writeline("{0}",i);break;}}}
}

总结

其实到这里,我们关于一维数组的知识点就全部讲完了,你也发现博主讲一个数据类型的思路,其实就是从概念,到声明,再到使用,而使用中,其实就是五个过程,得,改,遍历,增,删,查。

日后我们进行其他复杂数据结构地讲解时,大抵也是这样的套路。

希望这篇对数组讲解的文章对你有帮助。

还是那句话,学习基础,戒骄戒躁,脚踏实地。

共勉。

请期待我的下一篇博文!

这篇关于C#基础(3)一维数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136367

相关文章

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

C#中的 StreamReader/StreamWriter 使用示例详解

《C#中的StreamReader/StreamWriter使用示例详解》在C#开发中,StreamReader和StreamWriter是处理文本文件的核心类,属于System.IO命名空间,本... 目录前言一、什么是 StreamReader 和 StreamWriter?1. 定义2. 特点3. 用

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

C# 委托中 Invoke/BeginInvoke/EndInvoke和DynamicInvoke 方法的区别和联系

《C#委托中Invoke/BeginInvoke/EndInvoke和DynamicInvoke方法的区别和联系》在C#中,委托(Delegate)提供了多种调用方式,包括Invoke、Begi... 目录前言一、 Invoke方法1. 定义2. 特点3. 示例代码二、 BeginInvoke 和 EndI

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

C#中的 Dictionary常用操作

《C#中的Dictionary常用操作》C#中的DictionaryTKey,TValue是用于存储键值对集合的泛型类,允许通过键快速检索值,并且具有唯一键、动态大小和无序集合的特性,常用操作包括添... 目录基本概念Dictionary的基本结构Dictionary的主要特性Dictionary的常用操作

C# winform操作CSV格式文件

《C#winform操作CSV格式文件》这篇文章主要为大家详细介绍了C#在winform中的表格操作CSV格式文件的相关实例,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录实例一实例效果实现代码效果展示实例二实例效果完整代码实例一实例效果当在winform界面中点击读取按钮时 将csv中