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方法会直接修改原始数组,并且没有返回值

相关推荐
大二转专业2 小时前
408算法题leetcode--第24天
考研·算法·leetcode
凭栏落花侧2 小时前
决策树:简单易懂的预测模型
人工智能·算法·决策树·机器学习·信息可视化·数据挖掘·数据分析
hong_zc3 小时前
算法【Java】—— 二叉树的深搜
java·算法
吱吱鼠叔4 小时前
MATLAB计算与建模常见函数:5.曲线拟合
算法·机器学习·matlab
嵌入式AI的盲5 小时前
数组指针和指针数组
数据结构·算法
Indigo_code8 小时前
【数据结构】【顺序表算法】 删除特定值
数据结构·算法
阿史大杯茶8 小时前
Codeforces Round 976 (Div. 2 ABCDE题)视频讲解
数据结构·c++·算法
LluckyYH9 小时前
代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会
算法·深度优先·动态规划·软件构建·图论·dfs
转调9 小时前
每日一练:地下城游戏
开发语言·c++·算法·leetcode
不穿格子衬衫10 小时前
常用排序算法(下)
c语言·开发语言·数据结构·算法·排序算法·八大排序