C#零基础入门系列(八)——数组

引言

📌 在 C# 编程的世界里,数组是一种非常基础且重要的数据结构。它如同一个整齐排列的“集装箱”,它能将大量数据整齐封装,有序存储,让我们可以通过索引快速访问和操作这些元素,极大地提高了数据处理的效率。让程序跑得更快、代码写得更优雅!今天,我们就深入C#数组,揭秘其高效用法!

一、数组基础:什么是数组?

数组是相同数据类型的元素的集合,这些元素在内存中连续存储,通过索引来访问。数组的索引从 0 开始,这意味着第一个元素的索引是 0,第二个元素的索引是 1,以此类推。

4-220I01455113N

核心特点:

  • ✅ 固定长度:声明后大小不可变

  • ✅ 内存连续:高速读写

  • ✅ 强类型:确保数据安全

二、数组声明

在 C# 中声明一个数组的语法格式如下:

data_type[] array_name;

其中,data_type 用来指定数组中元素的类型;[ ]用来指定数组的维度;array_name 为数组的名称。示例代码如下:

int[] array1            // 声明一个整型数组
double[] array2     // 声明一个浮点型数组

三、初始化数组

在C# 中数组只有初始化后才可以为其中的每个元素赋值。因为数组是引用类型的,所以您需要使用 new 关键字来对数组进行初始化,例如:

int[] array1                       // 声明一个整型数组
array1 = new int[10]        // 初始化数组 array1
double[] array2                // 声明一个浮点型数组
array2 = new double[5]   // 初始化数组 array2

当然,你也可以将数组的声明和初始化还可以放在一起进行,如下所示:

int[] array1 = new int[10]                // 初始化一个长度为 10 的整型数组
double[] array2 = new double[5]   // 初始化一个长度为 5 的浮点型数组

提示:初始化数组的过程中,new int[10] 中[ ]里面的数字代表数组的长度,也就是数组中最多可以存放多少个元素,我们可以根据需要来设定数组的长度。

四、数组赋值

我们可以使用数组的索引来为数组中的各个元素赋值,如下所示:

int[] arr = new int[10];
arr[0] = 10;
arr[1] = 11;

我们也可以在声明数组时直接为数组赋值,只需要将数组中的每个元素依次放入到一个{ }中,并将每个元素使用,分隔开即可,如下所示:

double[] arr1 = {96.5, 98.0, 99.5, 90.0};
int[] arr2 = {1, 2, 3, 4, 5, 6, 7, 8, 9};

使用上面的方法并不用提前设定数组的长度,如果想要指定数组的长度只需要像下面这样即可:

double[] arr1 = new double[4]{90.5, 94.0, 99.5, 96.0};
int[] arr2 = new int[10]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

当然像下面这样省略数组的长度也是可以的,例如:

double[] arr1 = new double[]{96.5, 98.0, 99.5, 90.0};
int[] arr2 = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

数组也可以像变量一样,使用一个定义好的数组为另一个相同类型的数组赋值,这种情况下,两个数组将指向相同的内存地址,如下所示:

int[] arr1 = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] arr2 = arr1;

提示:当我们创建一个数组时,C# 的编译器会根据数组类型隐式的为数组中的每个元素初始化一个默认值。例如 int 类型的数组中所有元素都会被初始化为 0。

五、访问数组中元素

我们可以通过数组的索引(也可称为下标)来访问数组中的指定元素,只需要在数组名的后面加上一个方括号[ ],并在其中填写对应的数组索引即可,如下所示:

int[] arr = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int a = arr[0];

六、多维数组

在C# 中同样支持多维数组(也可称为矩形数组),它可以是二维的,也可以是三维的,多维数组中的数据以类似表格(行、列)的形式存储,因此也被称为矩阵。要创建多维数组,我们需要在声明数组的方括号内添加逗号,例如:

int[,] arr=new int[3,3];         // 声明一个二维数组
int[,,] arr=new int[3,3,3];     // 声明一个三维数组 

1、二维数组多维数组中最简单的形式是二维数组,我们可以将二维数组看作是一个表格,这个表格中具有相应的行数和列数,下图中展示了一个包含 3 行 4 列的二维数组。

4-220I0145I2922

我们可以使用arr[i, j]的形式来访问二维数组中的每个元素,其中 arr 为数组的名称,而 i 和 j 则是数组元素的索引,类似于表格中的行和列。

2、初始化二维数组二维数组的初始化与一维数组类似,例如我们要定义一个 3 行 4 列的整型数组,可以使用以下几种方式:

// 第一种方式
int[,] arr = new int[3,4]{    {0, 1, 2, 3},    {4, 5, 6, 7},    {8, 9, 10, 11}};
// 第二种方式
int[,] arr = new int[,]{    {0, 1, 2, 3},    {4, 5, 6, 7},    {8, 9, 10, 11}};
// 第三种方式
int[,] arr = {    {0, 1, 2, 3},    {4, 5, 6, 7},    {8, 9, 10, 11}};

3、访问二维数组中元素二维数组中的元素同样可以通过索引(行索引和列索引)来访问的,例如:

int[,] arr = new int[3,4]{    {0, 1, 2, 3},    {4, 5, 6, 7},    {8, 9, 10, 11}};
int a = arr[1, 0]; 

上例中arr[1, 0]代表了数组 arr 中第二行中的第一个元素。

七、交错数组——“数组的数组”

C# 中的交错数组就是元素为数组的数组,换句话说就是交错数组中的每个元素都可以是维度和大小不同的数组,所以有时交错数组也被称为“数组的数组”。

1、声明交错数组

交错数组的声明语法如下所示:

data_type[][] array_name;

假如要声明一个具有三个元素的一维交错数组,并且数组中的每个元素都是一个一维的整型数组,示例代码如下:

int[][] jaggedArray = new int[3][];

2、初始化交错数组和普通数组相同,交错数组也需要初始化后才可以使用,可以使用下面的方式初始化一个交错数组。

int[][] jaggedArray = new int[3][]; // 定义一个交错数组
jaggedArray[0] = new int[5];        // 对数组的第一个元素初始化
jaggedArray[1] = new int[4];        // 对数组的第二个元素初始化
jaggedArray[2] = new int[2];        // 对数组的第三个元素初始化

上面的交错数组中包含三个元素,第一个元素是长度为 5 的整型数组,第二个元素是长度为 4 的整型数组,第三个元素是长度为 2 的整型数组。

3、访问数组元素以上面定义的交错数组 jaggedArray 为例,可以使用如下所示的方法来获取数组的中每个元素或者为指定的元素赋值:

int a = jaggedArray[0][1];    // 变量 a 的值为:2
jaggedArray[2][1] = 0;        // 将交错数组中第三个数组元素中的第二个元素赋值为 0

💡 多维数组与交错数组的区别

  • 多维数组:内存连续,适合数学计算

  • 交错数组:灵活省内存,适合不规则数据

八、数组的高频操作

1、遍历数组

int[] arr = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for(int i = 0; i < 10; i++){
    Console.WriteLine("arr[{0}] = {1}", i, arr[i]);
}

2. 排序与反转

Array.Sort(fruits); // 正序  
Array.Reverse(fruits); // 反转 

3. 查找元素

int[] arr = new int[]{10, 51, 32, 13, 46, 25, 76, 17, 58, 69};
int index = Array.IndexOf(arr, 51); // 返回1 

4. Length属性用于获取数组的长度,即数组中元素的个数。

int[] nums = {1, 2, 3, 4};
Console.WriteLine(nums.Length); // 输出4

🌟 结语

通过本文的介绍,相信你对 C# 数组已经有了较为全面的了解。数组在 C# 编程中应用广泛,掌握好数组的使用,能让你的编程之路更加顺畅。赶紧动手实践起来,感受数组的魅力吧!

往期回顾

C#零基础入门系列(一)——C#简介

C#零基础入门系列(二)——第一个C#程序

C#零基础入门系列(三)——数据类型

C#零基础入门系列(四)——变量与常量

C#零基础入门系列(五)——类型转换

C#零基础入门系列(六)——变量的作用域 

C#零基础入门系列(七)——运算符

欢迎关注我的微信公众号“愚者老王”

 “点赞❤️+赞赏👍是最大的鼓励!”

posted on 2025-09-05 08:14  愚者老王  阅读(32)  评论(0)    收藏  举报