配列(Array)とは
C#プログラミングにおいて、「配列」は、同じデータ型(例: int型、string型など)の複数の値を、連続したメモリ領域に格納するための最も基本的なデータ構造です。
配列を使用することで、個別の変数(score1, score2, score3…)を大量に宣言する代わりに、scoresという一つの変数名でデータをまとめて管理できます。
C#の配列は「固定サイズ」であり、一度作成するとそのサイズ(格納できる要素数)を変更することはできません。(サイズを動的に変更したい場合は List<T> を使用します)。
この記事では、C#で配列を宣言し、初期化し、使用する基本的な方法について解説します。
1. 配列の宣言とインデックスによるアクセス
最も基本的な方法は、newキーワードで配列を作成する際に、要素数(サイズ)を指定することです。
インデックス(Index)によるアクセス: 配列の各要素には、0から始まる「インデックス(添え字)」と呼ばれる番号が割り当てられます。
[0]は 1番目の要素[1]は 2番目の要素- …
[サイズ - 1]が 最後の要素
コード例1:サイズ指定と代入
まず5個のstringを格納できる配列を作成し、その後、インデックスを使って各位置に値を代入します。
using System;
public class ArrayDeclarationExample
{
public static void Main()
{
// 1. サイズを指定して、5個の string を格納できる配列を作成
// (この時点では、中身はすべて null)
string[] teamNames = new string[5];
// 2. インデックス [0] から [4] を使って値を代入
teamNames[0] = "Team Alpha";
teamNames[1] = "Team Bravo";
teamNames[2] = "Team Charlie";
teamNames[3] = "Team Delta";
teamNames[4] = "Team Echo";
// teamNames[5] = "Team Foxtrot"; // エラー: IndexOutOfRangeException
Console.WriteLine("--- インデックスによるアクセス ---");
// 3. インデックスを指定して値を読み出す
Console.WriteLine($"最初のチーム: {teamNames[0]}");
Console.WriteLine($"3番目のチーム: {teamNames[2]}");
}
}
出力結果:
--- インデックスによるアクセス ---
最初のチーム: Team Alpha
3番目のチーム: Team Charlie
2. 配列の宣言と同時に初期化
配列に格納したい値が最初から決まっている場合、newと{}(初期化子)を使って、宣言と同時に値を設定するのが一般的です。
この方法では、コンパイラが {} 内の要素数を自動的にカウントするため、サイズ([5]など)を指定する必要はありません。
コード例2:宣言時の初期化
using System;
public class ArrayInitializeExample
{
public static void Main()
{
// 宣言と同時に、{ } 内の値で初期化する
int[] scores = new int[] { 85, 92, 78, 100, 64 };
Console.WriteLine("--- 初期化された配列 ---");
Console.WriteLine($"2番目のスコア: {scores[1]}"); // 92
}
}
3. 型推論による初期化 (var と new[])
C# 3.0以降、配列の初期化はさらに簡潔に記述できます。
varキーワードと new [] { ... } を組み合わせると、コンパイラが {} の中身(例: 10, 20)を見て、「これはint型の配列だな」と自動的に型を推論してくれます。
コード例3:var と new []
この方法は、特に int や string のような単純な配列を初期化する際によく使われる、現代的な書き方です。
using System;
public class ArrayTypeInferenceExample
{
public static void Main()
{
// new [] { ... } の中身から、
// コンパイラが自動的に string[] 型であると推論する
var weekdays = new[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
Console.WriteLine("--- 型推論による初期化 ---");
Console.WriteLine($"金曜日: {weekdays[4]}");
}
}
配列の操作:Length と foreach ループ
配列を操作する際、2つの重要な機能があります。
Lengthプロパティ: 配列の総要素数(サイズ)をint型で返します。(例:weekdays.Lengthは5を返します)foreachループ: 配列の先頭([0])から末尾まで、全要素を順番に処理するための最も安全で簡単な方法です。
コード例4:Length と foreach
using System;
public class ArrayIterationExample
{
public static void Main()
{
var scores = new[] { 85, 92, 78, 100, 64 };
int totalScore = 0;
// 1. Length プロパティで要素数を取得
Console.WriteLine($"データ(要素数): {scores.Length} 件");
// 2. foreach ループで全要素を安全に処理
foreach (var score in scores)
{
Console.WriteLine($"処理中のスコア: {score}");
totalScore += score;
}
double average = (double)totalScore / scores.Length;
Console.WriteLine($"---");
Console.WriteLine($"合計点: {totalScore}");
Console.WriteLine($"平均点: {average:F1}"); // F1: 小数点以下1桁
}
}
出力結果:
データ(要素数): 5 件
処理中のスコア: 85
処理中のスコア: 92
処理中のスコア: 78
処理中のスコア: 100
処理中のスコア: 64
---
合計点: 419
平均点: 83.8
まとめ
C#の配列(Array)は、固定サイズの同型データを扱うための基本です。
- 宣言:
new string[5](サイズ指定)またはnew [] { "A", "B" }(初期化)で作成します。 - アクセス:
myArray[0]のように、0から始まるインデックスで読み書きします。 - 反復処理:
foreachループを使用するのが最も一般的で安全です。 - サイズ取得:
myArray.Lengthプロパティを使用します。
