在 C# 中,数组是一种用于存储固定大小的同类型数据集合的数据结构。使用数组可以高效地处理多个相同类型的数据项。以下是 C# 数组的常见操作和使用方法:
### 声明和初始化数组
在 C# 中,可以通过多种方式声明和初始化数组:
- **一维数组**:`int[] numbers = new int[5];` 创建一个包含 5 个整数的一维数组。
- **直接初始化**:`int[] numbers = {1, 2, 3, 4, 5};` 在声明时初始化数组元素。
### 访问数组元素
数组中的每个元素都可以通过索引访问,索引从 `0` 开始。例如:
```csharp
int[] numbers = {1, 2, 3, 4, 5};
Console.WriteLine(numbers[0]); // 输出第一个元素 1
```
### 修改数组元素
可以直接通过索引修改数组中的元素值:
```csharp
numbers[0] = 10; // 将第一个元素修改为 10
```
### 遍历数组
可以使用 `for` 或 `foreach` 循环遍历数组的所有元素:
```csharp
foreach (int num in numbers)
{
Console.WriteLine(num); // 输出每个元素
}
```
### 传递数组作为参数
数组可以作为参数传递给方法,以便在方法内部操作数组内容:
```csharp
void PrintArray(int[] array)
{
foreach (int num in array)
{
Console.WriteLine(num);
}
}
// 调用方法
int[] numbers = {1, 2, 3, 4, 5};
PrintArray(numbers); // 输出数组中的每个元素 [^1]
```
### 使用 `params` 关键字
C# 提供了 `params` 关键字,允许将可变数量的参数作为数组传递给方法:
```csharp
private static int Add(params int[] arr)
{
int sum = 0;
foreach(var item in arr)
{
sum += item;
}
return sum;
}
// 调用方法
Add(1, 2, 3); // 返回 6
Add(new int[] {1, 2, 3}); // 返回 6
```
这简化了调用者代码,并允许传递一组相同类型的数据或完全不传递参数 [^2]。
### 动态创建数组
可以使用 `new` 关键字动态创建数组,指定数组的大小:
```csharp
int[] numbers = new int[5]; // 创建一个包含 5 个整数的数组 [^3]
```
### 多维数组
C# 支持多维数组,包括矩形数组(规则的二维或多维数组)和交错数组(数组的数组):
- **矩形数组**:`int[,] matrix = new int[3, 3];` 表示一个 3x3 的二维数组。
- **交错数组**:`int[][] jaggedArray = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5} };` 表示一个数组的数组。
### 数组排序
C# 提供了内置的排序功能,可以使用 `Array.Sort()` 方法对数组进行排序:
```csharp
int[] numbers = {5, 3, 8, 1};
Array.Sort(numbers); // 排序后变为 {1, 3, 5, 8}
```
### 查找数组元素
可以使用 `Array.IndexOf()` 方法查找特定元素的索引:
```csharp
int index = Array.IndexOf(numbers, 3); // 查找数字 3 的位置
```
### 复制数组
可以使用 `Array.Copy()` 方法复制数组的一部分到另一个数组中:
```csharp
int[] source = {1, 2, 3, 4, 5};
int[] destination = new int[5];
Array.Copy(source, destination, source.Length); // 复制整个数组
```
### 数组长度
可以通过 `Length` 属性获取数组的长度:
```csharp
int length = numbers.Length; // 获取数组的长度
```