声明数组
// 数组的长度根据存储值的数量进行自动推断
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
获取数组的长度 => 存储值的数量
数组长度是只读属性
数组的长度默认是不可变的,没有办法直接添加新内容,或移除旧内容
int length = ints1.Length;
Console.WriteLine(length); //4
数组的索引 index
可以通过 索引 index 的概念读写数组中的内容
索引 是数组内位置的编号,从 0 开始
由于索引是数字,需要使用专用的 [index] 的语法
使用索引时不要超出索引范围 [0, Length - 1]
数组内的每一项 item
ints1[0] = 100;
int item0 = ints1[0];
Console.WriteLine(item0);
使用for循环获取数组中的元素
for (int i = 0; i < ints1.Length; i++) {
// i 作为索引使用,获取数组的每一项
Console.WriteLine($"索引:{i}, 值:{ints1[i]}");
}
foreach 循环获取数组中的元素
语法结构:
foreach (int element in collection)
{
// 循环体代码
}
element:在每次迭代中,element变量将依次代表集合中的每个元素。
collection:要进行遍历的集合或数组。
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (var number in numbers)
{
Console.WriteLine(number); //1 2 3 4 5
}
多维数组
多维数组是一种用于存储具有多个维度的元素的数据结构
// 定义一个 3x3 的二维数组
int[,] matrix = new int[3, 3];
// 初始化二维数组
matrix[0, 0] = 1;
matrix[0, 1] = 2;
// 访问二维数组的元素
int value = matrix[1, 2];
// 定义一个 2x3x4 的三维数组
int[,,] cube = new int[2, 3, 4];
// 初始化三维数组
cube[0, 1, 2] = 5;
cube[1, 2, 3] = 10;
// 访问三维数组的元素
int value = cube[0, 1, 2];
// 数组嵌套数组,嵌套的数组长度要保持一致
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]);
交错数组
由多个一维数组组成的数组,每个一维数组的长度可以不同
// 数组内嵌套的数组允许长度不一致
int[][] ints5 = {
new int[] { 1, 2 },
new int[] { 1, 2, 3 }
};
Console.WriteLine(ints5[0][0]);
Clear 清除数组元素
第一个参数是数组名字
第二个参数是开始清除的索引(包含这个索引)
第三个参数是清除的个数(注意:这里的清除是把元素替换成0)
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
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
int[] arr = { 1, 2, 3, 3, 4, 5, 6 };
Console.WriteLine(Array.IndexOf(arr, 0)); // -1
Console.WriteLine(Array.IndexOf(arr, 3)); // 3
Reverse 数组反转
反转数组元素的顺序
参数是需要反转的数组名
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 数组排序
将数组元素进行升序排列
参数是需要排序的数组名
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方法会直接修改原始数组,并且没有返回值