跳到主要内容

C# 数组

提示
  1. 数组声明与初始化:在 C# 中,数组通过指定数据类型和大小进行声明,并可以在声明时或通过索引进行初始化。
  2. 元素访问与修改:通过索引从 0 开始访问和修改数组元素,可更改特定索引处的元素值。
  3. 循环遍历与 System.Linq 操作:使用 forforeach 循环遍历数组元素,而 System.Linq 提供高级操作,例如查找最小值、最大值和计算平均值。

数组是相似类型数据的集合。例如,

假设我们需要记录 5 个学生的年龄。我们可以创建一个数组,而不是创建 5 个单独的变量:

创建一个包含 5 个学生年龄的数组

1. C# 数组声明

在 C# 中,以下是我们如何声明一个数组。

datatype[] arrayName;

这里,

  • dataType - 数据类型,如 intstringchar
  • arrayName - 它是一个标识符

让我们看一个示例,

int[] age;

这里,我们创建了一个名为 age 的数组。它可以存储 int 类型的元素。

但它能存储多少个元素呢?

要定义数组能容纳的元素数量,我们必须为 C# 中的数组分配内存。例如,

// 声明一个数组
int[] age;

// 为数组分配内存
age = new int[5];

这里,new int[5] 表示该数组可以存储 5 个元素。我们也可以说数组的大小/长度是 5。

注意:我们也可以在一行中声明并为数组分配内存。例如,

int[] age = new int[5];

2. C# 中的数组初始化

在 C# 中,我们可以在声明时初始化数组。例如,

int [] numbers = {1, 2, 3, 4, 5};

这里,我们创建了一个名为 numbers 的数组,并在大括号内用值 12345 初始化它。

请注意,我们没有提供数组的大小。在这种情况下,C# 会通过计算数组中的元素数量(即 5 个)自动指定大小。

在数组中,我们使用 索引号 来确定每个数组元素的位置。我们可以使用索引号在 C# 中初始化数组。例如,

// 声明一个数组
int[] age = new int[5];

// 初始化数组
age[0] = 12;
age[1] = 4;
age[2] = 5;
...

使用索引号初始化数组

注意

  • 数组索引始终从 0 开始。即数组的第一个元素位于索引 0。
  • 如果数组的大小为 5,则最后一个元素的索引将位于 4(5 - 1)。

3. 访问数组元素

我们可以使用数组的索引来访问数组中的元素。例如,

// 访问索引 2 处的元素
array[2];

// 访问索引 4 处的元素
array[4];

这里,

  • array[2] - 访问第三个元素
  • array[4] - 访问第五个元素

示例:C# 数组

using System;

namespace AccessArray {
class Program {
static void Main(string[] args) {

// 创建一个数组
int[] numbers = {1, 2, 3};

// 访问第一个元素
Console.WriteLine("Element in first index : " + numbers[0]);

// 访问第二个元素
Console.WriteLine("Element in second index : " + numbers[1]);

// 访问第三个元素
Console.WriteLine("Element in third index : " + numbers[2]);

Console.ReadLine();

}
}
}

输出

Element in first index : 1
Element in second index : 2
Element in third index : 3

在上述示例中,我们创建了一个名为 numbers 的数组,其中包含元素 1, 2, 3。这里,我们使用索引号来访问数组的元素。

  • numbers[0] - 访问第一个元素,1
  • numbers[1] - 访问第二个元素,2
  • numbers[3] - 访问第三个元素,3

4. 更改数组元素

我们也可以更改数组的元素。要更改元素,只需将新值赋给特定索引。例如,

using System;

namespace ChangeArray {
class Program {
static void Main(string[] args) {

// 创建一个数组
int[] numbers = {1, 2, 3};

Console.WriteLine("旧值在索引 0: " + numbers[0]);

// 更改索引 0 的值
numbers[0] = 11;

// 打印新值
Console.WriteLine("新值在索引 0: " + numbers[0]);

Console.ReadLine();
}
}
}

输出

Old Value at index 0: 1
New Value at index 0: 11

在上述示例中,索引 0 的初始值为 1。注意以下行,

// 更改索引 0 的值
numbers[0] = 11;

这里,我们将索引 0 的新值设为 11。现在,索引 0 的值从 1 变为 11

5. 使用循环遍历 C# 数组

在 C# 中,我们可以使用循环遍历数组的每个元素。例如,

示例:使用 for 循环

using System;

namespace AccessArrayFor {
class Program {
static void Main(string[] args) {

int[] numbers = { 1, 2, 3};

for(int i=0; i < numbers.Length; i++) {
Console.WriteLine("元素在索引 " + i + ": " + numbers[i]);
}

Console.ReadLine();
}
}
}

输出

Element in index 0: 1
Element in index 1: 2
Element in index 2: 3

在上述示例中,我们使用了一个 for 循环 来遍历 numbers 数组的元素。注意以下行,

numbers.Length

这里,数组的 Length 属性给出了数组的大小。

我们也可以使用 foreach 循环 来遍历数组的元素。例如,

示例:使用 foreach 循环

using System;

namespace AccessArrayForeach {
class Program {
static void Main(string[] args) {
int[] numbers = {1, 2, 3};

Console.WriteLine("数组元素: ");

foreach(int num in numbers) {
Console.WriteLine(num);
}

Console.ReadLine();
}
}
}

输出

数组元素:
1
2
3

6. 使用 System.Linq 进行 C# 数组操作

在 C# 中,我们有 System.Linq 命名空间,提供了不同的方法来执行数组中的各种操作。例如,

示例:查找最小和最大元素

using System;

// 提供各种方法供数组使用
using System.Linq;

namespace ArrayMinMax {
class Program {
static void Main(string[] args) {

int[] numbers = {51, 1, 3, 4, 98};

// 获取最小元素
Console.WriteLine("最小元素: " + numbers.Min());

// Max() 返回数组中最大的数字
Console.WriteLine("最大元素: " + numbers.Max());

Console.ReadLine();
}
}
}

输出

最小元素: 1
最大元素: 98

在上面的示例中,

  • numbers.Min() - 返回数组中最小的数字,1
  • numbers.Max() - 返回数组中最大的数字,98

示例:计算数组的平均值

using System;
// 提供各种方法供数组使用
using System.Linq;

namespace ArrayFunction {
class Program {
static void Main(string[] args) {

int[] numbers = {30, 31, 94, 86, 55};

// 获取所有数组元素的总和
float sum = numbers.Sum();

// 获取数组中元素的总数
int count = numbers.Count();

float average = sum/count;

Console.WriteLine("平均值 : " + average);

// 计算平均值
Console.WriteLine("使用 Average() 计算的平均值 : " + numbers.Average());

Console.ReadLine();
}
}
}

输出

平均值 : 59.2
使用 Average() 计算的平均值 : 59.2

在上面的示例中,我们使用了

  • numbers.Sum() 来获取数组所有元素的总和
  • numbers.Count() 来获取数组中元素的总数

然后我们将总和除以数量来获取平均值。

float average = sum / count;

这里,我们还使用了 System.Linq 命名空间中的 numbers.Average() 方法直接获取平均值。

注意:在使用 Min()Max()Sum()Count()Average() 方法时,必须使用 System.Linq 命名空间。