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から始まります。したがって、最初の要素はインデックス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変数に割り当てます。これはよりクリーンで読みやすい方法です。

多次元配列

今まで一维配列しか扱っていませんでしたが、複数の科目の成績を記録したい場合、多次元配列が便利です。3人の生徒の4科目の成績を保存する2次元配列を作成してみましょう:

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