C#数组(一维数组、多维数组、交错数组、参数数组)

在 C# 中,数组是一种用于存储固定大小的相同类型元素的集合。数组可以包含值类型、引用类型或对象类型的元素,并且在内存中是连续存储的。以下是关于 C# 数组的详细介绍:

1. 一维数组

声明与初始化
// 声明数组
int[] numbers;             // 声明但未初始化
int[] scores = new int[5]; // 初始化长度为5的数组(默认值为0)
​
// 声明并初始化元素
string[] names = new string[3] { "Alice", "Bob", "Charlie" };
int[] primes = { 2, 3, 5, 7, 11 };       // 简化语法
访问与修改元素
int[] arr = new int[3];
arr[0] = 100;          // 设置元素
int value = arr[0];    // 获取元素(索引从0开始)
数组长度
int length = arr.Length; // 获取数组长度(只读属性)

2. 多维数组

二维数组
// 声明与初始化
int[,] matrix = new int[3, 4];          // 3行4列的矩阵
int[,] table = { {1,2}, {3,4}, {5,6} }; // 3行2列
​
// 访问元素
matrix[0, 1] = 10;  // 第1行第2列
int val = table[2, 0]; // 获取第3行第1列的值
三维数组
int[,,] cube = new int[2, 2, 2]; // 三维数组
cube[0, 1, 0] = 20;

3. 交错数组(数组的数组)

交错数组是一个数组,其元素是数组,每个子数组可以有不同的长度。

// 声明与初始化
int[][] jaggedArray = new int[3][];  // 包含3个数组的交错数组
jaggedArray[0] = new int[2];         // 第一个子数组长度为2
jaggedArray[1] = new int[3] {1,2,3}; // 第二个子数组长度为3
​
// 简化语法
int[][] jagged = {
    new int[] {1,2},
    new int[] {3,4,5}
};
​
// 访问元素
int x = jagged[1][2]; // 获取第二个子数组的第三个元素

4. 数组方法与属性

常用属性
  • Length:获取数组总元素数(多维数组返回所有维度的乘积)。

  • Rank:获取数组的维数(例如,二维数组返回 2)。

常用方法
int[] nums = { 3, 1, 4 };
​
// 排序
Array.Sort(nums);         // 升序排序:[1,3,4]
​
// 反转
Array.Reverse(nums);      // 反转数组:[4,3,1]
​
// 查找元素
int index = Array.IndexOf(nums, 3); // 返回索引1
​
// 填充元素
Array.Fill(nums, 0);      // 所有元素设为0:[0,0,0]
​
// 复制数组
int[] copy = new int[3];
Array.Copy(nums, copy, 3); // 复制nums到copy

5. 数组遍历

for 循环
int[] arr = { 1, 2, 3 };
for (int i = 0; i < arr.Length; i++) {
    Console.WriteLine(arr[i]);
}
foreach 循环
foreach (int num in arr) {
    Console.WriteLine(num);
}
LINQ 查询
using System.Linq;
var evenNums = arr.Where(n => n % 2 == 0);

6. 数组与泛型集合

数组是固定大小的,而泛型集合(如 List<T>)可以动态调整大小:

using System.Collections.Generic;
​
List<int> list = new List<int>();
list.Add(10);         // 添加元素
list.AddRange(arr);   // 添加数组元素
int count = list.Count; // 获取元素数

7. 参数数组(params)

允许方法接受可变数量的参数:

void PrintNumbers(params int[] numbers) {
    foreach (int num in numbers) {
        Console.WriteLine(num);
    }
}
​
// 调用
PrintNumbers(1, 2, 3);     // 传递多个参数
PrintNumbers(new int[]{4,5}); // 传递数组

8. 数组协变(Covariance)

引用类型数组支持协变,即子类数组可以隐式转换为父类数组:

object[] objArray = new string[5]; // 合法:string是object的子类
objArray[0] = "hello";
objArray[1] = 123; // 运行时异常:不能将int赋值给string[]

总结

类型语法特点
一维数组int[] arr;元素连续存储,固定长度
多维数组int[,] matrix;矩形结构,每维长度固定
交错数组int[][] jagged;数组的数组,子数组长度可变
参数数组params int[] numbers方法接受可变数量的参数

数组是 C# 中基础且重要的数据结构,适合存储和处理固定大小的数据集。对于动态数据,建议使用泛型集合(如 List<T>)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张謹礧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值