在C#中,数组是用于存储固定数量相同类型元素的数据结构。根据维度的不同,可以分为一维数组、二维数组(矩阵阵列)、三维数组等。每增加一个维度,数据的组织方式就会变得更加复杂。
一维数组是最简单的数组形式,它是一个线性集合,包含一系列相同类型的元素。可以通过单个索引来访问每个元素。
int[] myArray = new int[5]; // 创建一个含有5个整数的一维数组
int[] numbers = new int[5]; // 创建一个含有5个整数的一维数组
// 或者使用集合初始化器
int[] numbersInit = {1, 2, 3, 4, 5};
Console.WriteLine(numbers[0]); // 输出第一个元素
numbers[0] = 10; // 修改第一个元素的值
foreach (var num in numbers) {
Console.WriteLine(num);
}
二维数组可以视为“数组的数组”,通常用来表示表格或矩阵,需要两个索引(行和列)来定位一个特定的元素。
int[,] myMatrix = new int[3, 4]; // 创建一个3行4列的二维数组
int[,] matrix = new int[3, 4]; // 创建一个3x4的二维数组
// 或者使用集合初始化器
int[,] matrixInit = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
Console.WriteLine(matrix[0, 0]); // 输出第一行第一列的元素
matrix[0, 0] = 100; // 修改第一行第一列的元素值
for (int i = 0; i < matrix.GetLength(0); i++) {
for (int j = 0; j < matrix.GetLength(1); j++) {
Console.Write(matrix[i, j] + " ");
}
Console.WriteLine();
}
三维数组可以想象成多个二维数组堆叠在一起,形成了一个立方体结构,需要三个索引(深度、行、列)来定位一个元素。
int[,,] myCube = new int[2, 3, 4]; // 创建一个2x3x4的三维数组
double[,,] cube = new double[2, 3, 4]; // 创建一个2x3x4的三维数组
// 或者使用集合初始化器
double[,,] cubeInit = {
{
{1.1, 2.2, 3.3, 4.4}, {5.5, 6.6, 7.7, 8.8}, {9.9, 10.1, 11.1, 12.1}},
{
{13.1, 14.1, 15.1, 16.1}, {17.1, 18.1, 19.1, 20.1}, {21.1, 22.1, 23.1, 24.1}}
};
Console.WriteLine(cube[0, 0, 0]); // 输出第一个体素的值
cube[0, 0, 0] = 100.0; // 修改第一个体素的值
for (int i = 0; i < cube.GetLength(0); i++) {
for (int j = 0; j < cube.GetLength(1); j++) {
for (int k = 0; k < cube.GetLength(2); k++) {
Console.Write(cube[i, j, k] + " ");
}
Console.WriteLine();
}
Console.WriteLine("-----");
}
理论上,C#支持创建四维及更高维度的数组,但它们并不常用,因为随着维度的增加,理解和操作这些数组会变得非常复杂。多维数组使用更多的索引来定位元素,例如四维数组将需要四个索引。
IndexOutOfRangeException
异常。通过上述方法,你可以对不同维度的数组进行初始化、访问和遍历。