跳到主要内容

C#多维数组

提示
  1. 多维数组的结构:C# 中的多维数组是一个数组,其每个元素本身也是数组。例如,二维数组可视为具有行和列的表格。
  2. 声明和初始化:多维数组通过特定的声明语法创建,可在声明时或之后初始化。例如,二维数组可以通过指定行和列的值进行初始化。
  3. 访问和修改元素:可以通过索引号访问和修改多维数组的元素,并使用嵌套循环遍历数组中的每个元素。

在学习多维数组之前,请确保你已经了解了 C# 中的单维数组

在多维数组中,数组的每个元素也是一个数组。例如,

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

这里,x 是一个多维数组,它有两个元素:35。并且,数组的每个元素也是一个有 3 个元素的数组。

C# 中的二维数组

二维数组由作为其元素的单维数组组成。它可以表示为具有特定行数和列数的表格。

C# 二维数组

这里,行 35 是二维数组的元素。

1. 二维数组声明

这是在 C# 中声明二维数组的方法。

int[ , ] x = new int [2, 3];

这里,x 是一个有 2 个元素的二维数组。每个元素也是一个有 3 个元素的数组。

所以,总共这个数组可以存储 6 个元素(2 * 3)。

注意:单个逗号 [ , ] 表示数组是二维的。

2. 二维数组初始化

在 C# 中,我们可以在声明时初始化数组。例如,

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

这里,x 是一个有两个元素 {1, 2, 3}{3, 4, 5} 的二维数组。我们可以看到数组的每个元素也是一个数组。

我们还可以在初始化时指定行数和列数。例如,

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

3. 从二维数组中访问元素

我们使用索引号来访问二维数组的元素。例如,

// 一个二维数组
int[ , ] x = { { 1, 2 ,3}, { 3, 4, 5 } };

// 访问第一行的第一个元素
x[0, 0]; // 返回 1

// 访问第二行的第三个元素
x[1, 2]; // 返回 5

// 访问第一行的第三个元素
x[0, 2]; // 返回 3

C# 具有元素的二维数组

示例:C# 二维数组

using System;

namespace MultiDArray {
class Program {
static void Main(string[] args) {

// 初始化二维数组
int[ , ] numbers = {{2, 3}, {4, 5}};

// 访问第一行的第一个元素
Console.WriteLine("索引 [0, 0] 处的元素: "+numbers[0, 0]);

// 访问第二行的第一个元素
Console.WriteLine("索引 [1, 0] 处的元素: "+numbers[1, 0]);
}
}
}

输出

索引 [0, 0] 处的元素: 2
索引 [1, 0] 处的元素: 4

在上述示例中,我们创建了一个名为 numbers 的二维数组,其行为 35

这里,我们使用索引号来访问二维数组的元素。

  • numbers[0, 0] - 访问第一行的第一个元素(2
  • numbers[1, 0] - 访问第二行的第一个元素(4

更改数组元素

我们也可以更改二维数组的元素。要更改元素,我们只需将新值赋给特定索引。例如,

using System;

namespace MultiDArray {
class Program {
static void Main(string[] args) {

int[ , ] numbers = {{2, 3}, {4, 5}};

// 原始元素
Console.WriteLine("原索引 [0, 0] 的元素: "+numbers[0, 0]);

// 赋予新值
numbers[0, 0] = 222;

// 新元素
Console.WriteLine("新索引 [0, 0] 的元素: "+numbers[0, 0]);
}
}
}

输出

原索引 [0, 0] 的元素: 2
新索引 [0, 0] 的元素: 222

在上述示例中,索引 [0, 0] 的初始值是 2。注意这行代码,

// 赋予新值
numbers[0, 0] = 222;

这里,我们在索引 [0, 0] 赋予了新值 222。现在,索引 [0, 0] 的值从 2 变为 222

使用循环遍历 C# 数组

using System;

namespace MultiDArray {
class Program {
static void Main(string[] args) {

int[ , ] numbers = { {2, 3, 9}, {4, 5, 9} };

for(int i = 0; i < numbers.GetLength(0); i++) {
Console.Write("行 "+ i+": ");

for(int j = 0; j < numbers.GetLength(1); j++) {
Console.Write(numbers[i, j]+" ");

}
Console.WriteLine();

}
}
}
}

输出

0: 2 3 9
1: 4 5 9

在上述示例中,我们使用了嵌套循环来遍历二维数组的元素。这里,

  • numbers.GetLength(0) - 返回二维数组中的行数
  • numbers.GetLength(1) - 返回行中的元素数

注意:我们也可以创建一个三维数组。技术上讲,三维数组是一个包含多个二维数组作为其元素的数组。例如,

int[ , , ] numbers = { { { 1, 3, 5 }, { 2, 4, 6 } },
{ { 2, 4, 9 }, { 5, 7, 11 } } };

这里,[ , , ](两个逗号)表示三维数组。