【C#】C#における配列の使い方完全ガイド【初心者から上級者まで対応】

C#は、簡潔で効率的なコードを書けるプログラミング言語として多くの開発者に利用されています。

本記事では、C#での配列の基礎から応用までを詳しく解説します。

「配列」はデータ管理で多用する重要な要素です。配列を自在に扱えるようになり、開発スキルをさらに向上させましょう。

 

sponsor link

1. C#における配列とは?

配列(Array)は、同じデータ型の複数の要素を連続したメモリ領域に格納するデータ構造です。配列を使うことで、以下のようなメリットがあります。

  • データの一括管理
  • メモリ使用量の最適化
  • 高速な要素アクセス

一方で、要素数が固定されるため、柔軟性に欠ける場面もあります。その際はListなどの他のコレクションを検討すると良いでしょう。

 


2. 配列の宣言と初期化

配列を使うには、以下の手順で宣言・初期化を行います。

配列の基本構文

データ型[] 配列名 = new データ型[サイズ];

配列の宣言例

// 例1: サイズを指定して初期化
int[] numbers = new int[5];

// 例2: 値を指定して初期化
string[] names = { "Alice", "Bob", "Charlie" };

// 例3: 初期化を分けて記述
int[] ages;
ages = new int[] { 20, 25, 30 };

 


3. 配列の要素にアクセスする方法

配列の各要素には、インデックスを使ってアクセスします。C#では、配列のインデックスは0から始まります。

int[] scores = { 85, 90, 78 };

// 要素の取得
int firstScore = scores[0]; // 85
int secondScore = scores[1]; // 90

// 要素の更新
scores[2] = 80; // {85, 90, 80}

注意: 範囲外のインデックスにアクセスするとIndexOutOfRangeExceptionが発生します。

 


4. 多次元配列の使い方

C#では、2次元以上の配列も簡単に扱うことができます。

以下、2次元配列の使い方を例に解りやすく解説します。

二次元配列の宣言と初期化

// 2×3の二次元配列
int[,] matrix = new int[2, 3] {
{ 1, 2, 3 },
{ 4, 5, 6 }
};

要素へのアクセス

int value = matrix[1, 2]; // 6
matrix[0, 0] = 10; // 10に更新

 


5. 配列を使った便利な操作

C#の配列には便利なメソッドが多数用意されています。

配列の長さを取得

int[] array = { 1, 2, 3, 4, 5 };
int length = array.Length; // この場合 5 がlengthに代入されます。

配列のソート

C#の配列では簡単にソートを行うことも出来ます。

int[] array = { 5, 3, 1, 4, 2 };
Array.Sort(array); // {1, 2, 3, 4, 5}

配列の検索

int[] array = { 10, 20, 30, 40 };
int index = Array.IndexOf(array, 30); // 2

 


6. 配列とListや他のコレクションの違い

C#では、配列の他にList<T>Dictionary<TKey, TValue>などの柔軟なコレクションがあります。

それぞれのコレクションの違いは以下の通りです。

特徴配列List
サイズ固定可変
パフォーマンス高速なアクセス機能と性能のバランス
使い所固定データ量の処理可変データ量の処理

 


7. 配列のよくあるエラーとその対処法

範囲外アクセス

int[] array = { 1, 2, 3 };
int value = array[3]; // エラー: IndexOutOfRangeException

解決法: 配列のサイズを確認する。

if (index >= 0 && index < array.Length) {
Console.WriteLine(array[index]);
}

 


8. まとめ

C#の配列は、効率的で強力なデータ構造です。本記事で紹介した内容を元に、配列を効果的に使いこなしましょう。

  • 配列は同じデータ型をまとめて管理するのに最適。
  • 配列のサイズが固定されるため、Listなどの利用も検討する。

コメント

タイトルとURLをコピーしました