C#で配列に要素を追加する方法まとめ【配列とリストの違いも解説】

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#のコーディングがよりスムーズになります。

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