【C#】一维、二维、三维数组的使用

embedded/2025/2/12 13:37:58/

在C#中,数组是用于存储固定数量相同类型元素的数据结构。根据维度的不同,可以分为一维数组、二维数组(矩阵阵列)、三维数组等。每增加一个维度,数据的组织方式就会变得更加复杂。

一维数组

一维数组是最简单的数组形式,它是一个线性集合,包含一系列相同类型的元素。可以通过单个索引来访问每个元素。

int[] myArray = new int[5]; // 创建一个含有5个整数的一维数组
  • 存储一系列数据:例如,保存一个班学生的所有成绩。
  • 队列或栈:在一维数组中实现简单的队列(FIFO)或栈(LIFO)数据结构。

初始化

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列的二维数组
  • 表格数据:用来表示电子表格或者数据库表,其中每一行代表一条记录,每一列代表字段。 
  • 图像处理:每个像素可以由二维数组的一个元素表示,其中包含颜色信息(如RGB值)。

初始化

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的三维数组
  • 3D建模:三维数组可以用于表示三维空间中的点或体素(voxel),这对于计算机图形学和视频游戏中构建世界模型非常重要。 
  • 时间序列分析:对于随时间变化的二维数据集,比如天气预报中的温度读数(纬度、经度和时间),可以使用三维数组来组织这些数据。

初始化

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#支持创建四维及更高维度的数组,但它们并不常用,因为随着维度的增加,理解和操作这些数组会变得非常复杂。多维数组使用更多的索引来定位元素,例如四维数组将需要四个索引。

 

注意事项

  • GetLength() 方法可以用来获取每个维度的长度。
  • 对于更高维度的数组,虽然理论上可以创建,但在实际编程中应谨慎使用,因为它们可能会导致代码难以理解和维护。
  • 在处理多维数组时,确保索引不会超出数组的界限,否则会导致IndexOutOfRangeException异常。

通过上述方法,你可以对不同维度的数组进行初始化、访问和遍历。

 

 


http://www.ppmy.cn/embedded/161128.html

相关文章

Chapter 4-1. Troubleshooting Congestion in Fibre Channel Fabrics

This chapter covers the following topics: 本章包括以下内容: Congestion troubleshooting methodology and workflow. Hints and tips for troubleshooting congestion. Cisco MDS NX-OS commands for troubleshooting congestion. Case studies demonstrating troubleshoo…

C++ 顺序表

顺序表的操作有以下&#xff1a; 1 顺序表的元素插入 给定一个索引和元素&#xff0c;这个位置往后的元素位置都要往后移动一次&#xff0c;元素插入的步骤有以下几步 &#xff08;1&#xff09;判断插入的位置是否合法&#xff0c;如果不合法则抛出异常 &#xff08;2&…

Linux下Gufw防火墙安装指南

在Linux中安装Gufw防火墙&#xff0c;你可以按照以下步骤进行&#xff1a; 1.更新软件包列表&#xff1a; 打开终端并执行以下命令来更新系统的软件包列表&#xff1a; sudo apt update 2.安装Gufw&#xff1a; 使用APT包管理器安装Gufw防火墙&#xff1a; sudo apt instal…

Python 数据挖掘与机器学习

模块一&#xff1a;Python编程 Python编程入门 1、Python环境搭建 2、如何选择Python编辑器&#xff1f; 3、Python基础 4、常见的错误与程序调试 5、第三方模块的安装与使用 6、文件读写&#xff08;I/O&#xff09; Python进阶与提高 1、Numpy模块库 2、Pandas模块…

JUnit 5 配置文件详解

JUnit 5 配置文件详解 JUnit 5 通过 junit-platform.properties 文件提供全局配置&#xff0c;允许开发者定制测试引擎、执行策略、日志行为等。以下是常用配置项及其含义&#xff0c;以及详细示例说明。 一、配置文件位置 路径&#xff1a;src/test/resources/junit-platfor…

Elasticsearch 安装与使用指南

Elasticsearch 安装与使用指南 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎&#xff0c;能够解决不断涌现出的各种用例。它提供了快速搜索、相关度排序、强大的数据分析等功能&#xff0c;广泛应用于日志分析、全文检索、应用性能监控等领域。 一、环境准备…

NLP论文速读(ICLR 2025)|在实时机器翻译中对齐人类偏好

论文速读|Simulpl: Aligning Human Preferences In Simultaneous Machine Translation 论文信息&#xff1a; 简介&#xff1a; 本文聚焦于实时机器翻译&#xff08;Simultaneous Machine Translation, SiMT&#xff09;任务。SiMT 是一种在接收源语言输入流的同时生成目标语言…

STM32自学记录(九)

STM32自学记录 文章目录 STM32自学记录前言一、DMA杂记二、实验1.学习视频2.复现代码 总结 前言 DMA 一、DMA杂记 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&…