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

相关推荐
戊辰happy20 分钟前
arcface
算法
浊酒南街1 小时前
决策树python实现代码1
python·算法·决策树
冠位观测者3 小时前
【Leetcode 热题 100】208. 实现 Trie (前缀树)
数据结构·算法·leetcode
黄金小码农3 小时前
C# 2024/12/26 周四
c#
小王爱吃月亮糖4 小时前
C++的23种设计模式
开发语言·c++·qt·算法·设计模式·ecmascript
坐井观老天6 小时前
使用 C# 测量程序运行消耗的的时间
开发语言·c#
小哈龙6 小时前
c++ 类似与c# 线程 AutoResetEvent 和 ManualResetEvent的实现
c++·c#·多线程
IT猿手6 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解LRMOP1-LRMOP6及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·算法·matlab·智能优化算法·多目标算法
YYY_小后知6 小时前
C# 中 Webclient和Httpclient
开发语言·c#
InfiSight智睿视界6 小时前
AI 技术,让洗护行业焕然「衣」新
人工智能·算法