当前位置: 首页 > news >正文

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

在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.lryc.cn/news/534265.html

相关文章:

  • MIT开源7B推理模型Satori:用行动思维链进行强化学习,增强自回归搜索
  • 【JVM详解二】常量池
  • w200基于spring boot的个人博客系统的设计与实现
  • 【算法】快速排序算法的实现:C 和 C++ 版本
  • 前沿科技一览未来发展趋势
  • js滚动到页面最底部
  • 视觉硬件选型和算法选择(CNN)
  • Mybatis篇
  • 【Python】元组
  • 【AI实践】deepseek支持升级git
  • 【AI实践】Cursor上手-跑通Hello World和时间管理功能
  • Redis数据库(二):Redis 常用的五种数据结构
  • 【计组】实验五 J型指令设计实验
  • ubuntu 本地部署deepseek r1 蒸馏模型
  • RestTemplate Https 证书访问错误
  • MySQL内存使用率高且不释放问题排查与总结
  • mysql8 从C++源码角度看sql生成抽象语法树
  • 【DeepSeek】DeepSeek概述 | 本地部署deepseek
  • 【C++】多态原理剖析
  • 【Rust自学】20.4. 结语:Rust学习一阶段完成+附录
  • pytorch引用halcon写数据集
  • 让文物“活”起来,以3D数字化技术传承文物历史文化!
  • aarch64 Ubuntu20.04 安装docker
  • JAVA:CloseableHttpClient 进行 HTTP 请求的技术指南
  • Mac上搭建k8s环境——Minikube
  • 经典排序算法复习----C语言
  • 自动驾驶数据集三剑客:nuScenes、nuImages 与 nuPlan 的技术矩阵与生态协同
  • [LUA ERROR] bad light userdata pointer
  • 【Java八股】JVM
  • 集成学习(一):从理论到实战(附代码)