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#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更