【C#零基础从入门到精通】(十六)——C#数组详解
在 C# 中,数组是一种用于存储相同类型元素的固定大小的有序集合。它可以包含任何数据类型,如整数、字符串、自定义对象等。以下从数组的声明、初始化、访问、多维数组、锯齿数组以及数组的常用操作方法等方面详细介绍 C# 数组。
1. 数组的声明
在 C# 中,声明数组需要指定数组元素的类型,后面跟上方括号 []
,再加上数组的名称。其基本语法如下:
<元素类型>[] <数组名称>;
例如,声明一个整数类型的数组:
int[] numbers;
这里只是声明了一个名为 numbers
的整数数组,但还没有为其分配内存空间,不能直接使用。
2. 数组的初始化
2.1 静态初始化
静态初始化是在声明数组的同时为其赋初值,编译器会根据初始值的数量自动确定数组的长度。语法如下:
<元素类型>[] <数组名称> = new <元素类型>[] { 值1, 值2, ... };
也可以简化为:
<元素类型>[] <数组名称> = { 值1, 值2, ... };
示例:
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
// 简化形式
int[] numbers2 = { 1, 2, 3, 4, 5 };
2.2 动态初始化
动态初始化是在声明数组时指定数组的长度,然后再为数组元素赋值。语法如下:
<元素类型>[] <数组名称> = new <元素类型>[数组长度];
示例:
int[] numbers = new int[5];
numbers[0] = 1;
numbers[1] = 2;
// 其他元素赋值...
3. 数组的访问
数组的元素可以通过索引来访问,索引从 0 开始,最大索引为数组长度减 1。语法如下:
<数组名称>[索引];
示例:
int[] numbers = { 1, 2, 3, 4, 5 };
int firstNumber = numbers[0]; // 访问第一个元素,值为 1
int lastNumber = numbers[4]; // 访问最后一个元素,值为 5
4. 数组的长度
可以使用数组的 Length
属性来获取数组的长度,即数组中元素的个数。示例:
int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // length 的值为 5
5. 多维数组
多维数组是包含多个维度的数组,常见的有多维二维数组和三维数组等。
5.1 二维数组
二维数组可以看作是一个表格,有行和列。声明和初始化二维数组的语法如下:
<元素类型>[,] <数组名称> = new <元素类型>[行数, 列数];
示例:
int[,] matrix = new int[3, 4]; // 声明一个 3 行 4 列的二维数组
// 初始化并赋值
int[,] matrix2 = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
访问二维数组元素需要指定行索引和列索引:
int value = matrix2[1, 2]; // 访问第 2 行第 3 列的元素,值为 7
5.2 三维数组
三维数组可以看作是多个二维数组的集合。声明和初始化三维数组的语法如下:
<元素类型>[,,] <数组名称> = new <元素类型>[第一维长度, 第二维长度, 第三维长度];
示例:
int[,,] cube = new int[2, 3, 4]; // 声明一个三维数组
6. 锯齿数组
锯齿数组是数组的数组,即每个元素又是一个数组,而且每个子数组的长度可以不同。声明和初始化锯齿数组的语法如下:
<元素类型>[][] <数组名称> = new <元素类型>[外层数组长度][];
示例:
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[2];
jaggedArray[1] = new int[3];
jaggedArray[2] = new int[4];
// 初始化并赋值
int[][] jaggedArray2 = { new int[] { 1, 2 }, new int[] { 3, 4, 5 }, new int[] { 6, 7, 8, 9 } };
访问锯齿数组元素需要指定外层数组索引和内层数组索引:
int value = jaggedArray2[1][2]; // 访问第二个子数组的第三个元素,值为 5
7. 数组的常用操作方法
7.1 Array.Length
用于获取数组的长度,前面已经介绍过。
7.2 Array.Sort
用于对数组元素进行排序,示例:
int[] numbers = { 5, 3, 1, 4, 2 };
Array.Sort(numbers); // 对数组进行升序排序
7.3 Array.Reverse
用于反转数组元素的顺序,示例:
int[] numbers = { 1, 2, 3, 4, 5 };
Array.Reverse(numbers); // 反转数组元素顺序,现在数组为 { 5, 4, 3, 2, 1 }
7.4 Array.IndexOf
用于查找数组中某个元素第一次出现的索引位置,如果未找到则返回 -1,示例:
int[] numbers = { 1, 2, 3, 4, 5 };
int index = Array.IndexOf(numbers, 3); // index 的值为 2
8. 数组的遍历
可以使用 for
循环、foreach
循环等方式遍历数组。
8.1 for
循环遍历
int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
8.2 foreach
循环遍历
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int num in numbers)
{
Console.WriteLine(num);
}
综上所述,C# 数组提供了强大而灵活的功能,能够满足各种不同的编程需求,合理运用数组可以高效地处理大量相同类型的数据。