C#获取二维及多维数组的行、列与维度长度方法

拾光
拾光
发布时间:2026-10-16| 5人浏览过
原创

在C#开发中,处理多维数据常需精确获取数组的行数、列数及各维度长度。本文将演示如何运用 GetLength()、Rank、GetUpperBound() 和 Length 等核心属性和方法,快速准确地提取二维及高维数组的关键信息,避免越界错误。

结果或目标:明确数组结构参数

在处理如矩阵运算、图像处理或游戏地图逻辑时,开发者必须清楚当前数据集的几何形态。目标是在不手动维护变量的前提下,通过内置API即时获取:
- 总维数:确定数组是几维的(如二维、三维)。
- 特定维度长度:例如矩阵的行数(第一维)或列数(第二维)。
- 总元素个数:所有维度长度的乘积,用于计算内存占用或批量处理总数。

准备条件

  • 环境要求:已安装 .NET Runtime 或 Visual Studio 等支持 C# 的开发工具。
  • 基础概念:理解 C# 中锯齿数组(Jagged Array)与交错数组(Rectangular/Jagged Array)的区别。本方案针对的是规则的多维数组,即 int[,] 形式。

真实操作顺序:获取维度的方法详解

第1步:定义二维数组实例

目的:构建一个标准的矩形二维数组作为测试对象。
动作:使用 new int[,] { ... } 语法初始化数组,确保各子数组长度一致以形成“矩形”结构。

// 定义一个3行3列的二维整型数组
int[,] array = new int[,] {{1,2,3},{4,5,6},{7,8,9}};

第2步:获取指定维度的长度(列数/行数)

目的:这是最常用且推荐的方式,直接获取某一维的元素数量。
入口:调用数组实例的 GetLength(int dimension) 方法。
重要参数:dimension 从 0 开始计数。对于二维数组,0 代表第一维(通常理解为“行”的数量),1 代表第二维(通常理解为“列”的数量)。
可观察状态:返回值为该维度的整数长度。

// 获取第2维(列)的长度
int col = array.GetLength(1); // 返回 3

第3步:通过索引上限推导另一维度长度

目的:在某些算法场景中,可能需要基于最大索引进行操作,从而反推长度。
动作:使用 GetUpperBound(int dimension) 获取指定维度的最大索引值(Index Max)。
关键逻辑:由于数组索引从 0 开始,因此 长度 = UpperBound + 1。
示例:若要获取行数(第0维),则取 array.GetUpperBound(0) + 1。

// 获取第1维(行)的长度:
// GetUpperBound(0) 返回最大索引(即2,因为是0,1,2三行)
int row = array.GetUpperBound(0) + 1; // 返回 3

第4步:确认数组的总维数

目的:判断当前变量是否为多维数组,以及它有多少个维度。
入口:读取 Rank 属性。
注意:Rank 反映的是声明时的维度结构,而非内容填充情况。对于 int[,],Rank 始终为 2。

int dims = array.Rank; // 返回 2

第5步:获取数组总元素个数

目的:计算数组中存储的所有基本单元总数,常用于遍历计数或分配连续内存。
入口:读取 Length 属性。
公式:总长度等于各维度长度的乘积(Row × Col)。

int totalElements = array.Length; // 返回 9 (3 * 3)

完成判断:推广至高阶多维数组

上述逻辑完全适用于更高维度的数组,例如三维甚至四维数组。假设我们定义一个四维数组 int[,,,] arr,其声明大小为 [9, 8, 7, 6],验证如下:

// 声明四维数组
int[,,,] arr = new int[9, 8, 7, 6];

// 1. 总维数为 4
Console.WriteLine(arr.Rank);

// 2. 获取各维度长度
Console.WriteLine(arr.GetLength(0)); // 返回 9 (第一维)
Console.WriteLine(arr.GetLength(1)); // 返回 8 (第二维)
Console.WriteLine(arr.GetLength(2)); // 返回 7 (第三维)
Console.WriteLine(arr.GetLength(3)); // 返回 6 (第四维)

// 3. 验证行数推导法
Console.WriteLine(arr.GetUpperBound(0) + 1); // 返回 9

// 4. 计算总元素数: 9*8*7*6
Console.WriteLine(arr.Length); // 返回 3024

通过这些 API,可以编写通用的辅助函数来打印任意维度数组的结构元数据,而无需硬编码维度值。

简要总结

综上所述,GetLength(dimension) 是获取特定维度大小的首选方法;Rank 用于识别数组维数级别;Length 提供总容量概览。掌握这些属性能显著提升 C# 中数据处理的安全性。以上就是 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 算法库。