网站首页 > 知识剖析 正文
C# 中的数组类型、多维数组和数组操作
1. 什么是数组?
- 定义:
数组是存储固定大小的相同类型元素的集合。 - 特性:类型一致性:所有元素必须是相同的数据类型。固定大小:数组的大小在创建后不能更改。索引访问:通过索引访问元素,从 0 开始。
2. 声明和初始化数组
- 声明数组:
- // 声明一个整数数组(大小未指定) int[] numbers; // 声明并初始化 int[] numbers = new int[5]; // 大小为5,默认值为0
- 初始化数组:
- 使用直接赋值:int[] numbers = { 1, 2, 3, 4, 5 };
- 使用 new:int[] numbers = new int[] { 1, 2, 3, 4, 5 };
3. 多维数组
- 二维数组:
- 定义和初始化:
- int[,] matrix = new int[2, 3]; // 2 行 3 列 int[,] predefinedMatrix = { { 1, 2, 3 }, { 4, 5, 6 } };
- 访问元素:
- Console.WriteLine(matrix[0, 1]); // 第一行第二列元素
- 三维及多维数组:
- 定义:int[,,] threeDimArray = new int[2, 3, 4]; // 三维数组
- 特点:
- 多维数组的元素通过多个索引访问,形状固定。
- 适合矩阵、立体数据存储。
4. 锯齿数组(Jagged Array)
- 定义:
- 锯齿数组是数组的数组,其中每个子数组可以具有不同的长度。
- 声明和初始化:
- int[][] jaggedArray = new int[3][]; // 定义一个包含三个数组的数组 jaggedArray[0] = new int[] { 1, 2, 3 }; jaggedArray[1] = new int[] { 4, 5 }; jaggedArray[2] = new int[] { 6 };
- 访问元素:
- Console.WriteLine(jaggedArray[1][0]); // 第二个数组的第一个元素
- 适用场景:
- 数据大小不均匀,例如学生成绩(不同学生有不同科目)。
5. 数组的常见操作
- 访问和修改元素:
- int[] numbers = { 10, 20, 30 }; Console.WriteLine(numbers[1]); // 访问索引为1的元素 numbers[1] = 25; // 修改索引为1的元素
- 遍历数组:
- 使用 for 循环:for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); }
- 使用 foreach 循环:foreach (int number in numbers) { Console.WriteLine(number); }
- 数组排序:
- Array.Sort(numbers); // 升序排序 Array.Reverse(numbers); // 降序排列
- 查找元素:
- int index = Array.IndexOf(numbers, 30); // 查找值为30的索引
- 复制数组:
- 使用 Array.Copy:int[] destination = new int[5]; Array.Copy(numbers, destination, numbers.Length);
- 使用 Clone:int[] clonedArray = (int[])numbers.Clone();
- 动态调整大小:
- Array.Resize(ref numbers, 10); // 调整大小到10
6. 数组的优缺点
- 优点:
- 高效的索引访问。
- 固定大小,内存连续分配,访问速度快。
- 缺点:
- 固定大小限制了动态需求。
- 插入和删除操作效率低。
7. 数组与集合的区别
特性 | 数组 | 集合 |
大小 | 固定,定义后不可更改 | 动态,可根据需求自动调整 |
类型限制 | 元素类型必须一致 | 允许不同的元素类型 |
操作复杂度 | 插入、删除较为复杂 | 插入、删除较为简单 |
性能 | 更高效,适合大批量数据操作 | 通常较数组稍慢 |
8. 示例代码:多维数组操作
using System;
class Program
{
static void Main()
{
// 定义二维数组
int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 } };
// 遍历二维数组
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();
}
// 访问特定元素
Console.WriteLine("元素 [1,2] 是: " + matrix[1, 2]);
}
}
9. 总结
- 数组类型:
- 包括一维数组、多维数组(矩阵)、和锯齿数组(不规则数据结构)。
- 操作灵活性:
- 提供了丰富的操作方法,如排序、查找、复制等。
- 选择场景:
- 数组适合处理固定大小、类型一致的结构化数据。
- 如果需要动态大小、复杂数据结构,推荐使用集合(如 List、Dictionary)。
数组是 C# 中基本而重要的存储结构,理解其特性和操作有助于高效编写代码。
猜你喜欢
- 2025-01-20 Excel中的6个经典排序技巧都不掌握,还敢称Excel达人?
- 2025-01-20 查询函数Choose、Lookup、Hlookup、Vlookup应用技巧解读
- 2025-01-20 一起学《C程序设计》第六课——数组、字符串及实战练习
- 2025-01-20 一文解决CSP-J考纲所有排序算法
- 2025-01-20 Excel VBA 自定义函数/数组字段定位/数组字段排序
- 2025-01-20 java基础,arrays类,Java的八种排序,冒泡排序
- 2025-01-20 excel中什么是数组,数组的作用是什么,这篇文章就带你入门
- 2025-01-20 16.9 数组 - 数据排序技术
- 2025-01-20 怎么求第K大的数,topK 问题(快排的应用)java
- 2025-01-20 VBA按日期统计就餐时段刷卡及人数(数组字典内置函数去重排序)
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)