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。这是一种更清晰、更易读的方式来遍历数组的所有元素。

多维数组

到目前为止,我们一直在使用一维数组。但如果我们想要为多个科目创建一个成绩簿呢?这就是多维数组派上用场的地方。让我们创建一个2D数组来存储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