C#基础——数组Array、数组API

C#基础------数组Array、数组API

1、数组:按照指定顺序存储指定数量的相同类型的值

声明数组

csharp 复制代码
 // 数组的长度根据存储值的数量进行自动推断
 int[] ints1 = new int[] { 2, 4, 6, 8 };
 //可以简写为
 int[] ints2 = { 2, 4, 6, 8 };
 // 定义数组时,指定数组长度
 int[] ints3 = new int[4] { 2, 4, 6, 8 };
 // 只规定长度,但是不给定初始值,实际存储的内容按类型默认值定义
 int[] ints4 = new int[4];

数组长度 Length

获取数组的长度 => 存储值的数量

数组长度是只读属性

数组的长度默认是不可变的,没有办法直接添加新内容,或移除旧内容

csharp 复制代码
int length = ints1.Length;
Console.WriteLine(length); //4

数组的索引 index

可以通过 索引 index 的概念读写数组中的内容

索引 是数组内位置的编号,从 0 开始

由于索引是数字,需要使用专用的 [index] 的语法

使用索引时不要超出索引范围 [0, Length - 1]

数组内的每一项 item

csharp 复制代码
ints1[0] = 100;
int item0 = ints1[0];
Console.WriteLine(item0);

使用for循环获取数组中的元素

csharp 复制代码
for (int i = 0; i < ints1.Length; i++) {
  // i 作为索引使用,获取数组的每一项
  Console.WriteLine($"索引:{i}, 值:{ints1[i]}");
}

foreach 循环获取数组中的元素

  • foreach循环是一种用于遍历集合或数组元素的迭代控制结构。它提供了一种简洁的方式来遍历集合中的每个元素,而不需要显式地使用索引或迭代器。

语法结构:

foreach (int element in collection)

{

// 循环体代码

}

element:在每次迭代中,element变量将依次代表集合中的每个元素。

collection:要进行遍历的集合或数组。

csharp 复制代码
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (var number in numbers)
{
    Console.WriteLine(number); //1 2 3 4 5
}

多维数组

多维数组是一种用于存储具有多个维度的元素的数据结构

csharp 复制代码
// 定义一个 3x3 的二维数组
int[,] matrix = new int[3, 3];

// 初始化二维数组
matrix[0, 0] = 1;
matrix[0, 1] = 2;

// 访问二维数组的元素
int value = matrix[1, 2];
csharp 复制代码
// 定义一个 2x3x4 的三维数组
int[,,] cube = new int[2, 3, 4];

// 初始化三维数组
cube[0, 1, 2] = 5;
cube[1, 2, 3] = 10;

// 访问三维数组的元素
int value = cube[0, 1, 2];
csharp 复制代码
 // 数组嵌套数组,嵌套的数组长度要保持一致
 int[,] ints = {
   { 0, 1 },
   { 2, 3 },
   { 4, 5 }
 };
 Console.WriteLine(ints.Length); // 所有元素的总数 6
 int d = ints.GetLength(0);      // 获取指定维度的长度
 Console.WriteLine(d);
 
 // 读写多维数组的值
 ints[1, 1] = 100;
 Console.WriteLine(ints[1, 1]);

交错数组

由多个一维数组组成的数组,每个一维数组的长度可以不同

csharp 复制代码
// 数组内嵌套的数组允许长度不一致
int[][] ints5 = {
  new int[] { 1, 2 },
  new int[] { 1, 2, 3 }
};
Console.WriteLine(ints5[0][0]);

2、数组API

Clear 清除数组元素

第一个参数是数组名字

第二个参数是开始清除的索引(包含这个索引)

第三个参数是清除的个数(注意:这里的清除是把元素替换成0)

csharp 复制代码
int[] arr = { 1, 2, 3, 4, 5, 6 };
Array.Clear(arr, 1, 2);
foreach (int i in arr) {
  Console.WriteLine(i); // 1 0 0 4 5 6 
}

IndexOf 查找数组的索引

第一个索引是需要查找的数组名

第二个索引是需要查找的元素(查找的是这个数组中第一次出现的索引)

如果有这个元素就会返回这个元素的索引,如果没有则返回 - 1

csharp 复制代码
int[] arr = { 1, 2, 3, 3, 4, 5, 6 };
Console.WriteLine(Array.IndexOf(arr, 0)); // -1
Console.WriteLine(Array.IndexOf(arr, 3)); // 2

LastIndexOf 从数组末尾开始查找指定元素在数组中的索引。

第一个索引是需要查找的数组名

第二个索引是需要查找的元素(查找的是这个数组中最后一次出现的元素)

如果有这个元素就会返回这个元素的索引,如果没有则返回 - 1

csharp 复制代码
int[] arr = { 1, 2, 3, 3, 4, 5, 6 };
Console.WriteLine(Array.IndexOf(arr, 0)); // -1
Console.WriteLine(Array.IndexOf(arr, 3)); // 3

Reverse 数组反转

反转数组元素的顺序

参数是需要反转的数组名

csharp 复制代码
int[] arr = { 1, 2, 3, 4, 5, 6 };
Array.Reverse(arr);
foreach (int i in arr) {
  Console.WriteLine(i); // 6 5 4 3 2 1
}

Sort 数组排序

将数组元素进行升序排列

参数是需要排序的数组名

csharp 复制代码
int[] arr = { 1, 6, 5, 2, 3, 4 };
Array.Sort(arr);
foreach (int i in arr) {
  Console.WriteLine(i); // 1 2 3 4 5 6
}
//如果需要降序排序可以使用Reverse方法来反转数组中元素的顺序
Array.Reverse(arr);
foreach (int i in arr) {
  Console.WriteLine(i); // 6 5 4 3 2 1
}

注意:Sort方法和Reverse方法会直接修改原始数组,并且没有返回值

相关推荐
CoovallyAIHub13 小时前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub14 小时前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub14 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
CoovallyAIHub14 小时前
开源:YOLO最强对手?D-FINE目标检测与实例分割框架深度解析
人工智能·算法·github
CoovallyAIHub15 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github
刀法如飞15 小时前
程序员必须知道的核心算法思想
算法·编程开发·算法思想
徐小夕16 小时前
pxcharts Ultra V2.3更新:多维表一键导出 PDF,渲染兼容性拉满!
vue.js·算法·github
CoovallyAIHub17 小时前
OpenClaw一脚踩碎传统CV?机器终于不再只是看世界
深度学习·算法·计算机视觉
CoovallyAIHub17 小时前
仅凭单目相机实现3D锥桶定位?UNet-RKNet破解自动驾驶锥桶检测难题
深度学习·算法·计算机视觉