はじめに
C#プログラミングにおいて、配列は非常に重要なデータ構造の一つです。配列を効果的に利用することで、複数のデータを一元管理し、効率的に処理することが可能になります。本記事では、C#における配列の宣言と初期化の基本について詳しく解説します。初学者の方にも理解しやすいように、具体的なコード例を交えながら説明していきます。
配列の宣言
配列の基本
配列は、同じ型のデータを連続して格納するためのデータ構造です。C#では、配列はArrayクラスとして実装されています。配列の宣言は以下のように行います。
int[] numbers;
この例では、int型の配列numbersを宣言しています。この時点では、配列のサイズや内容は指定されていません。
配列のサイズ指定
配列を宣言する際に、そのサイズを指定することもできます。サイズを指定すると、配列の要素数が固定され、その後変更することはできません。
int[] numbers = new int[5];
この例では、5つのint型要素を持つ配列numbersを宣言しています。各要素は自動的にデフォルト値(int型の場合は0)で初期化されます。
配列の初期化
一括初期化
配列の宣言と同時に、初期値を設定することができます。これを一括初期化と呼びます。
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
この例では、5つの要素を持つ配列numbersが宣言され、それぞれの要素に初期値が設定されています。この場合、配列のサイズは初期値の数に基づいて自動的に決定されます。
短縮形
C#では、配列の宣言と初期化を短縮形で記述することも可能です。
int[] numbers = { 1, 2, 3, 4, 5 };
この例は、前述の一括初期化と同じ結果を得るための短縮形です。初学者の方にもわかりやすく、よく使われる方法です。
空の配列の初期化
空の配列を初期化する場合、要素数を指定して宣言します。
int[] numbers = new int[0];
この例では、要素数が0のint型配列numbersを宣言しています。この配列には要素が存在しないため、追加や変更を行うことはできません。
動的初期化
配列の初期化は動的に行うことも可能です。例えば、ループを使用して配列の各要素に値を設定することができます。
int[] numbers = new int[5];
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = i * 2;
}
この例では、5つの要素を持つ配列numbersを宣言し、各要素にi * 2の値を設定しています。これにより、numbers配列には0, 2, 4, 6, 8が格納されます。
特殊な配列の初期化
多次元配列
C#では、多次元配列を宣言・初期化することもできます。多次元配列は、行列のようなデータ構造を扱うのに便利です。
int[,] matrix = new int[3, 3];
この例では、3行3列のint型多次元配列matrixを宣言しています。各要素はデフォルト値で初期化されます。
ジャグ配列
ジャグ配列(ジャグドアレイ)は、不揃いの多次元配列です。各行の要素数が異なる場合に使用されます。
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[2];
jaggedArray[1] = new int[3];
jaggedArray[2] = new int[4];
この例では、3つの要素を持つジャグ配列jaggedArrayを宣言しています。各要素には異なる長さの配列が格納されています。
配列の操作
配列の要素へのアクセス
配列の要素にアクセスするには、インデックスを使用します。インデックスは0から始まります。
int[] numbers = { 1, 2, 3, 4, 5 };
int firstElement = numbers[0]; // 1
int lastElement = numbers[numbers.Length - 1]; // 5
この例では、numbers配列の最初の要素と最後の要素にアクセスしています。
配列の要素の変更
配列の要素は、インデックスを指定して変更することができます。
int[] numbers = { 1, 2, 3, 4, 5 };
numbers[0] = 10; // 最初の要素を変更
numbers[4] = 50; // 最後の要素を変更
この例では、numbers配列の最初の要素を10に、最後の要素を50に変更しています。
配列のメソッド
Array.Sort
Array.Sortメソッドを使用すると、配列の要素を昇順にソートすることができます。
int[] numbers = { 5, 3, 4, 1, 2 };
Array.Sort(numbers);
この例では、numbers配列の要素が1, 2, 3, 4, 5にソートされます。
Array.Reverse
Array.Reverseメソッドを使用すると、配列の要素を逆順に並べ替えることができます。
int[] numbers = { 1, 2, 3, 4, 5 };
Array.Reverse(numbers);
この例では、numbers配列の要素が5, 4, 3, 2, 1に逆順に並べ替えられます。
配列のコピー
Array.Copy
Array.Copyメソッドを使用すると、配列の要素を他の配列にコピーすることができます。
int[] source = { 1, 2, 3, 4, 5 };
int[] destination = new int[5];
Array.Copy(source, destination, source.Length);
この例では、source配列の要素がdestination配列にコピーされます。
Clone
Cloneメソッドを使用して、配列の完全なコピーを作成することも可能です。
int[] numbers = { 1, 2, 3, 4, 5 };
int[] clone = (int[])numbers.Clone();
この例では、numbers配列のクローンがclone配列として作成されます。
配列とコレクション
C#では、配列以外にもさまざまなコレクションが提供されています。例えば、List<T>は動的な配列として使用することができ、要素の追加や削除が容易です。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6);
numbers.Remove(3);
この例では、List<int>を使用して要素の追加と削除を行っています。List<T>は、配列よりも柔軟性が高く、多くの場面で便利に使用することができます。
まとめ
本記事では、C#における配列の宣言と初期化の基本について詳しく解説しました。配列の宣言方法、初期化方法、要素へのアクセス方法、配列の操作メソッド、配列のコピー方法、さらには配列とコレクションの違いについて説明しました。これらの基本を理解することで、C#プログラミングにおいて配列を効果的扱えるようになるでしょう。

