C#でプログラミングを学び始めると、多くの人が「配列に要素を追加したいけどどうすればいいの?」という疑問にぶつかります。C#の配列は一度作成するとサイズが固定されてしまうため、要素の追加には少し工夫が必要です。この記事では、配列に要素を追加する方法を複数紹介するとともに、「配列」と「List(リスト)」の違いや、用途に応じた使い分けについても解説します。初心者でも理解しやすいコード例と一緒に、C#の基本的な配列操作をマスターしましょう。
C#における「配列(Array)」は、同じ型のデータをまとめて管理するための構造です。以下のようにして定義できます。
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
この配列は、3つのint
型の要素を持ちます。しかし、配列は作成時に要素数が固定されており、あとから直接「追加」することができません。
C#では、配列に新しい要素を追加するには以下のような方法があります。
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;
この方法では、元の配列のすべての要素を新しい配列にコピーし、最後に追加したい値を代入しています。
ポイント: この方法は、要素が多いとパフォーマンスに影響が出る可能性があります。
C#には、配列のサイズを変更するArray.Resize
という便利なメソッドがあります。
int[] numbers = { 1, 2, 3 };
Array.Resize(ref numbers, numbers.Length + 1);
numbers[numbers.Length - 1] = 4;
このコードでは、numbers
配列のサイズを1つ増やし、最後に新しい要素を追加しています。
メリット:
注意点:ref
キーワードが必要です(元の配列を直接変更するため)。
C#には、配列のように扱えてサイズが可変なList<T>
という便利なコレクションがあります。要素の追加が簡単にできます。
List<int> numbers = new List<int> { 1, 2, 3 };
numbers.Add(4);
Listの特徴:
配列との違い:
特徴 | 配列(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<int> numbers = new List<int> { 1, 2, 3 };
numbers.AddRange(new int[] { 4, 5 });
AddRange
メソッドを使えば、配列や他のListをまとめて追加可能です。
C#では、通常はList<T>
を使う方が便利です。配列を使うのは以下のような場面が多いです。
一方、要素の追加・削除が頻繁にある場合は、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#のコーディングがよりスムーズになります。