C# 数组:初学者的多值存储指南

你好,有抱负的程序设计师!今天,我们将踏上一段激动人心的旅程,探索 C# 数组的世界。可以把数组想象成一个神奇的容器,它可以存储多个相同类型的项目。这就像一盒你最喜欢的巧克力,但我们要存储的是数据!

C# - Arrays

数组是什么?

在我们深入了解之前,先来了解一下数组是什么。数组是一种数据结构,允许你在单个变量中存储多个相同类型的数据。想象你是一名老师(就像我一样!),你想存储30个学生的成绩。你不需要创建30个独立的变量,而是可以使用一个数组来保存所有这些成绩。酷吧?

声明数组

让我们从基础开始:如何声明一个数组。语法非常简单:

dataType[] arrayName;

例如,如果我们想声明一个整数数组,我们会写:

int[] grades;

这行代码告诉 C# 我们正在创建一个名为 grades 的数组,它将包含整数值。但记住,此时我们还没有指定我们要存储多少成绩,或者这些成绩是什么。

初始化数组

既然我们已经声明了数组,让我们给它一个大小。我们可以用几种方式来做:

方法1:指定大小

int[] grades = new int[5];

这会创建一个可以存储5个整数值的数组。最初,所有元素将被设置为整数的默认值,即0。

方法2:用值初始化

int[] grades = new int[] { 85, 92, 78, 95, 88 };

在这里,我们创建数组的同时立即用值填充它。C# 足够智能,能够根据我们提供的值推断出我们想要一个5个元素的数组。

给数组赋值

假设我们使用方法1创建了数组,现在我们想添加一些成绩。我们可以通过访问数组的每个元素来做到这一点,使用它的索引:

grades[0] = 85;  // 第一个成绩
grades[1] = 92;  // 第二个成绩
grades[2] = 78;  // 第三个成绩
grades[3] = 95;  // 第四个成绩
grades[4] = 88;  // 第五个成绩

记住,C#(和大多数编程语言)中的数组索引从0开始,而不是1。所以第一个元素在索引0,第二个在索引1,以此类推。

访问数组元素

要访问数组中的元素,我们使用相同的方括号表示法:

int firstGrade = grades[0];  // 这将给我们85
int thirdGrade = grades[2];  // 这将给我们78

下面是一个将所有这些内容结合在一起的有趣程序:

int[] grades = new int[5];

grades[0] = 85;
grades[1] = 92;
grades[2] = 78;
grades[3] = 95;
grades[4] = 88;

Console.WriteLine("成绩是:");
for (int i = 0; i < grades.Length; i++)
{
Console.WriteLine($"学生 {i + 1}: {grades[i]}");
}

这个程序将输出:

成绩是:
学生 1: 85
学生 2: 92
学生 3: 78
学生 4: 95
学生 5: 88

使用 foreach 循环

C# 提供了一个方便的 foreach 循环,使得遍历数组变得非常简单。让我们用 foreach 重写之前的例子:

int[] grades = new int[] { 85, 92, 78, 95, 88 };

Console.WriteLine("成绩是:");
int studentNumber = 1;
foreach (int grade in grades)
{
Console.WriteLine($"学生 {studentNumber}: {grade}");
studentNumber++;
}

foreach 循环会自动遍历数组中的每个元素,每次迭代将其分配给变量 grade。这是一种更干净、更易读的方式来遍历数组的所有元素。

多维数组

到目前为止,我们一直在使用一维数组。但如果我们想要为多个科目创建一个成绩簿呢?这就是多维数组派上用场的地方。让我们创建一个2维数组来存储3个学生的4门科目成绩:

int[,] gradeBook = new int[3, 4]
{
{ 85, 92, 78, 95 },
{ 80, 89, 93, 87 },
{ 76, 88, 91, 84 }
};

Console.WriteLine("成绩簿:");
for (int i = 0; i < 3; i++)
{
Console.Write($"学生 {i + 1}: ");
for (int j = 0; j < 4; j++)
{
Console.Write($"{gradeBook[i, j]} ");
}
Console.WriteLine();
}

这将输出:

成绩簿:
学生 1: 85 92 78 95
学生 2: 80 89 93 87
学生 3: 76 88 91 84

数组方法

C# 为处理数组提供了几种有用的方法。以下是一些最常见的方法:

方法 描述 示例
Array.Sort() 对数组中的元素进行排序 Array.Sort(grades);
Array.Reverse() 反转数组中元素顺序 Array.Reverse(grades);
Array.Find() 查找匹配指定条件的第一个元素 int firstPassingGrade = Array.Find(grades, grade => grade >= 60);
Array.FindAll() 查找匹配指定条件的所有元素 int[] passingGrades = Array.FindAll(grades, grade => grade >= 60);
Array.IndexOf() 返回数组中第一个出现的值的索引 int index = Array.IndexOf(grades, 95);

下面是一个快速示例,使用其中的一些方法:

int[] grades = new int[] { 85, 92, 78, 95, 88 };

Array.Sort(grades);
Console.WriteLine("排序后的成绩:");
foreach (int grade in grades)
{
Console.Write($"{grade} ");
}
Console.WriteLine();

int highestGrade = grades[grades.Length - 1];
Console.WriteLine($"最高成绩是:{highestGrade}");

int lowestGrade = grades[0];
Console.WriteLine($"最低成绩是:{lowestGrade}");

这个程序将输出:

排序后的成绩:
78 85 88 92 95
最高成绩是:95
最低成绩是:78

就这样!你刚刚完成了 C# 数组的快速游览。记住,熟能生巧,所以不要害怕实验这些概念。尝试创建不同类型的数组,玩转多维数组,探索各种数组方法。在你意识到之前,你将成为一个数组巫师,轻松地召唤出复杂的数据结构!

未来的程序员们,快乐编码!??

Credits: Image by storyset