C#でプログラミングを学び始めると、多くの人が「配列に要素を追加したいけどどうすればいいの?」という疑問にぶつかります。C#の配列は一度作成するとサイズが固定されてしまうため、要素の追加には少し工夫が必要です。この記事では、配列に要素を追加する方法を複数紹介するとともに、「配列」と「List(リスト)」の違いや、用途に応じた使い分けについても解説します。初心者でも理解しやすいコード例と一緒に、C#の基本的な配列操作をマスターしましょう。
C#の配列とは?基本をおさらい
C#における「配列(Array)」は、同じ型のデータをまとめて管理するための構造です。以下のようにして定義できます。
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
この配列は、3つのint
型の要素を持ちます。しかし、配列は作成時に要素数が固定されており、あとから直接「追加」することができません。
配列に要素を追加する基本的な方法
C#では、配列に新しい要素を追加するには以下のような方法があります。
方法1:新しい配列を作成してコピーする
int[] oldArray = { 1, 2, 3 };
int newElement = 4;
int[] newArray = new int[oldArray.Length + 1];
for (int i = 0; i < oldArray.Length; i++)
{
newArray[i] = oldArray[i];
}
newArray[newArray.Length - 1] = newElement;
この方法では、元の配列のすべての要素を新しい配列にコピーし、最後に追加したい値を代入しています。
ポイント: この方法は、要素が多いとパフォーマンスに影響が出る可能性があります。
配列の要素追加にはArray.Resizeも便利
C#には、配列のサイズを変更するArray.Resize
という便利なメソッドがあります。
int[] numbers = { 1, 2, 3 };
Array.Resize(ref numbers, numbers.Length + 1);
numbers[numbers.Length - 1] = 4;
このコードでは、numbers
配列のサイズを1つ増やし、最後に新しい要素を追加しています。
メリット:
- コードがシンプル
- 自動でコピーしてくれる
注意点:ref
キーワードが必要です(元の配列を直接変更するため)。
配列ではなくListを使う方法(もっと簡単!)
C#には、配列のように扱えてサイズが可変なList<T>
という便利なコレクションがあります。要素の追加が簡単にできます。
List<int> numbers = new List<int> { 1, 2, 3 };
numbers.Add(4);
Listの特徴:
- サイズ変更が自由
- 要素の追加・削除が簡単
- ループやLINQとの相性も良い
配列との違い:
特徴 | 配列(Array) | リスト(List) |
---|---|---|
サイズ変更 | × | ○ |
パフォーマンス | ○(固定) | △(可変) |
型の制限 | 同じ型のみ | 同じ型のみ |
要素追加の簡単さ | △(工夫が必要) | ○(Addで簡単) |
要素を複数まとめて追加したいときは?
配列に複数の要素を追加する(手動で)
以下のように、追加したい個数分だけ新しい配列を作成し、コピーします。
int[] oldArray = { 1, 2, 3 };
int[] toAdd = { 4, 5 };
int[] newArray = new int[oldArray.Length + toAdd.Length];
Array.Copy(oldArray, newArray, oldArray.Length);
Array.Copy(toAdd, 0, newArray, oldArray.Length, toAdd.Length);
Listなら一発!
List<int> numbers = new List<int> { 1, 2, 3 };
numbers.AddRange(new int[] { 4, 5 });
AddRange
メソッドを使えば、配列や他のListをまとめて追加可能です。
配列を使うべきか、Listを使うべきか
C#では、通常はList<T>
を使う方が便利です。配列を使うのは以下のような場面が多いです。
- サイズが固定されていて変更されない場合
- パフォーマンスを重視するケース
- APIやライブラリが配列を要求しているとき
一方、要素の追加・削除が頻繁にある場合は、List<T>
を選ぶのがベストです。
実践例:ユーザー入力を配列に追加するプログラム
以下は、ユーザーから整数を入力して配列に追加していく簡単な例です(Listを使ったバージョン)。
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int>();
string input;
Console.WriteLine("数字を入力してください(終了するにはexitと入力):");
while (true)
{
input = Console.ReadLine();
if (input.ToLower() == "exit") break;
if (int.TryParse(input, out int result))
{
numbers.Add(result);
Console.WriteLine("追加されました!");
}
else
{
Console.WriteLine("無効な入力です。");
}
}
Console.WriteLine("入力された数値一覧:");
foreach (var n in numbers)
{
Console.WriteLine(n);
}
}
}
まとめ
- 配列に要素を追加するには、新しい配列を作成してコピーする必要がある
Array.Resize
でサイズ変更も可能だが、ref
が必要List<T>
を使うことで、柔軟で簡単に要素を追加・削除できる- 実務や開発では、可変サイズの
List<T>
を使うのが一般的
配列の基本を押さえつつ、適切な場面でListを活用すれば、C#のコーディングがよりスムーズになります。