C# 多维数组定义与遍历操作详解

许南星
许南星
发布时间:2026-10-13| 6人浏览过
原创

C# 支持多维数组以处理复杂数据关系,如三维矩阵或立方体结构。了解其初始化语法、维度属性 Rank 及边界获取方法 GetUpperBound是高效操作的关键。本文将通过具体代码示例,解析多维数组的定义方式及其常见属性的实际应用。

多维数组的初始化定义

在 C# 中,声明和初始化多维数组需要使用逗号分隔的方括号来指定维度数量,并用花括号包裹数据以完成赋值。以下是一个三维字符串数组 String[, ,] 的定义示例,包含两个子块(第一维)、每块四行(第二维)、每行五个元素(第三维):

string[,,] items = new string[,,] 
{
    { 
        { "A1", "A2", "A3", "☆", "○" }, 
        { "B1", "B2", "B3", "☆", "○" }, 
        { "C1", "C2", "C3", "☆", "○" }, 
        { "D1", "D2", "D3", "☆", "○" } 
    }, 
    { 
        { "E1", "E2", "E3", "☆", "○" }, 
        { "F1", "F2", "F3", "☆", "○" }, 
        { "G1", "G2", "G3", "☆", "○" }, 
        { "H1", "H2", "H3", "☆", "○" } 
    }
};

核心维度属性与方法

多维数组对象提供了几个关键属性和方法来辅助定位数据和验证结构。理解这些方法是正确遍历和访问元素的前提。

第 1 步:获取数组维度总数

使用 Rank 属性可以迅速判断数组是几维的。对于上述三维数组,该值为 3。这是后续操作的基础参数。

第 2 步:获取各维度索引上限

GetUpperBound(int dimension) 方法返回指定维度的最大索引值(即长度减一)。注意索引从 0 开始,因此返回值比实际元素数量少 1。

  • GetUpperBound(0):返回第一维(最外层块)的上限。
  • GetUpperBound(1):返回第二维(行)的上限。
  • GetUpperBound(Rank - 1):利用此公式可动态获取最后一维(列/元素)的上限,适用于任意维度的数组。

元素访问与运行结果分析

通过组合维度索引和边界查询结果,可以准确输出数组中的特定元素。以下代码展示了如何打印维度信息以及访问特定位置的字符数据:

System.Console.WriteLine("Items.Rank = " + items.Rank);
System.Console.WriteLine("Items.GetUpperBound(0)= " + items.GetUpperBound(0));
System.Console.WriteLine("Items.GetUpperBound(1)= " + items.GetUpperBound(1));
// 动态获取最后一维上限
System.Console.WriteLine("Items.GetUpperBound(2)= " + items.GetUpperBound(items.Rank - 1));

Console.WriteLine(); // 空行分隔

// 访问第一维第0块、第二维第0行、第三维不同列的元素
System.Console.WriteLine("Items[0, 0, 0]= " + items[0, 0, 0]);
System.Console.WriteLine("Items[0, 0, 1]= " + items[0, 0, 1]);
System.Console.WriteLine("Items[0, 0, 2]= " + items[0, 0, 2]);
System.Console.WriteLine("Items[0, 0, 3]= " + items[0, 0, 3]);
System.Console.WriteLine("Items[0, 0, 4]= " + items[0, 0, 4]);

Console.WriteLine(); // 空行分隔

// 访问第一维第0块、第二维第1行的元素
System.Console.WriteLine("Items[0, 1, 0]= " + items[0, 1, 0]);
System.Console.WriteLine("Items[0, 1, 1]= " + items[0, 1, 1]);
System.Console.WriteLine("Items[0, 1, 2]= " + items[0, 1, 2]);
System.Console.WriteLine("Items[0, 1, 3]= " + items[0, 1, 3]);
System.Console.WriteLine("Items[0, 1, 4]= " + items[0, 1, 4]);

运行上述代码将得到如下输出结果:

Items.Rank = 3
Items.GetUpperBound(0)= 1
Items.GetUpperBound(1)= 3
Items.GetUpperBound(2)= 4
Items[0, 0, 0]= A1
Items[0, 0, 1]= A2
Items[0, 0, 2]= A3
Items[0, 0, 3]= ☆
Items[0, 0, 4]= ○
Items[0, 1, 0]= B1
Items[0, 1, 1]= B2
Items[0, 1, 2]= B3
Items[0, 1, 3]= ☆
Items[0, 1, 4]= ○

从结果可以看出:
1. GetUpperBound(0) 为 1,说明第一维有 2 个元素(索引 0-1);
2. GetUpperBound(1) 为 3,说明第二维每块有 4 行(索引 0-3);
3. GetUpperBound(2) 为 4,说明第三维每行有 5 个元素(索引 0-4)。这些数据与初始化时设定的结构完全一致。

以上就是 C# 多维数组初始化、属性获取及元素访问的详细内容,更多关于 C# 数据结构操作的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。