C#における配列(Arrays)についての完全かつ包括的な記事
C#は強力なプログラミング言語であり、その機能の一つに「配列(Arrays)」があります。配列は、複数の同じ型のデータを一つの変数で管理するために使用されます。これにより、データを効率的に格納し、操作することが可能になります。本記事では、C#における配列の基本的な使い方から、応用的なテクニックまでを完全に解説します。
1. 配列とは?
配列は、同じデータ型の複数の値を一つの変数にまとめて扱うためのデータ構造です。配列の要素は、インデックス(添字)でアクセスします。インデックスは通常、0から始まります。配列を使用することで、同じ型のデータを効率的に管理することができます。
配列の宣言と初期化
C#で配列を使用するには、まず配列の型とサイズを指定して宣言し、その後初期化します。例えば、整数型の配列を宣言し、初期化する方法は以下の通りです。
csharpint[] numbers = new int[5]; // 5つの整数を格納する配列
上記のコードでは、整数型の配列numbersを宣言し、5つの要素を格納するスペースを確保しています。なお、配列のサイズは固定されるため、後からサイズを変更することはできません。
配列の初期化時に値を設定
配列の宣言と同時に、初期値を設定することもできます。例えば、次のように記述できます。
csharpint[] numbers = { 1, 2, 3, 4, 5 }; // 初期化時に値を設定
この場合、numbers配列には1から5までの整数が順番に格納されます。
2. 配列のアクセス
配列の要素にアクセスするためには、インデックスを使います。インデックスは0から始まり、配列の範囲内であれば任意のインデックスで要素にアクセスできます。
csharpint[] numbers = { 1, 2, 3, 4, 5 };
Console.WriteLine(numbers[0]); // 1番目の要素(インデックス0)は「1」
Console.WriteLine(numbers[4]); // 5番目の要素(インデックス4)は「5」
上記のコードでは、インデックス0の要素とインデックス4の要素を出力しています。インデックスが範囲外の場合、実行時にエラーが発生します。
3. 配列の長さ
配列の長さ(要素数)はLengthプロパティで確認できます。これにより、配列のサイズを動的に知ることができます。
csharpint[] numbers = { 1, 2, 3, 4, 5 };
Console.WriteLine(numbers.Length); // 配列の長さは5
Lengthプロパティを使用すると、配列の要素数を簡単に取得できます。
4. 配列の繰り返し処理
配列のすべての要素に対して処理を行いたい場合、foreach文を使用するのが一般的です。foreachを使うと、配列の全要素を簡単に処理できます。
csharpint[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
Console.WriteLine(number); // 各要素を順に表示
}
上記のコードでは、配列numbersのすべての要素に対してConsole.WriteLineを実行しています。
5. 配列の多次元配列
C#では、1次元配列だけでなく、2次元以上の配列(多次元配列)もサポートしています。例えば、2次元配列を宣言し、初期化するには以下のように記述します。
csharpint[,] matrix = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
このmatrix配列は、3行3列の2次元配列であり、各要素にアクセスするためには2つのインデックスを使用します。
csharpConsole.WriteLine(matrix[0, 0]); // 1番目の行、1番目の列の要素(値は1)
Console.WriteLine(matrix[2, 2]); // 3番目の行、3番目の列の要素(値は9)
6. 配列の配列(ジャグ配列)
C#では、各行の長さが異なる配列を持つこともできます。このような配列を「ジャグ配列」と呼びます。ジャグ配列は、配列の配列として実装され、異なるサイズの配列を格納できます。
csharpint[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[] { 1, 2 };
jaggedArray[1] = new int[] { 3, 4, 5 };
jaggedArray[2] = new int[] { 6, 7, 8, 9 };
Console.WriteLine(jaggedArray[1][2]); // 4番目の要素(値は5)
7. 配列のコピー
C#では、配列をコピーするためのメソッドがいくつか用意されています。Array.Copyメソッドを使うと、配列の一部または全部を他の配列にコピーできます。
csharpint[] source = { 1, 2, 3, 4, 5 };
int[] destination = new int[5];
Array.Copy(source, destination, 5); // sourceからdestinationに5要素をコピー
Console.WriteLine(destination[2]); // コピーされた配列の3番目の要素(値は3)
8. 配列のソートと逆順
C#では、Array.Sortメソッドを使って配列を簡単にソートできます。また、Array.Reverseメソッドを使って配列を逆順に並べ替えることもできます。
csharpint[] numbers = { 5, 2, 8, 1, 4 };
Array.Sort(numbers); // 昇順にソート
Console.WriteLine(string.Join(", ", numbers)); // 1, 2, 4, 5, 8
Array.Reverse(numbers); // 配列を逆順に
Console.WriteLine(string.Join(", ", numbers)); // 8, 5, 4, 2, 1
9. 配列の検索
配列の中から特定の要素を検索するには、Array.IndexOfメソッドを使用します。このメソッドは、指定された要素が最初に出現するインデックスを返します。
csharpint[] numbers = { 1, 2, 3, 4, 5 };
int index = Array.IndexOf(numbers, 3); // 3のインデックスを検索
Console.WriteLine(index); // 2
結論
C#の配列は、データを効率的に管理し、操作するための非常に強力なツールです。基本的な使い方から多次元配列やジャグ配列、配列のコピー、ソート、検索まで、さまざまな機能を提供します。配列を適切に活用することで、より効率的で可読性の高いコードを書くことができます。
