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

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

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 相关产品和应用

全部下载

专题列表