C#のコレクション初期化子の便利な使い方を完全ガイド!初心者でもわかる基礎解説
生徒
「先生、C#で配列とかリストを作るときに、いちいち要素を追加していくのが面倒なんですが、もっと簡単な方法はないんですか?」
先生
「良いところに気がつきましたね。C#にはコレクション初期化子という便利な書き方があって、最初からまとめてデータを入れておけます。」
生徒
「え、それって配列の中に数字を入れるみたいに、リストや辞書でもできるんですか?」
先生
「そうです!では、基本の使い方を一緒に見ていきましょう。」
1. コレクション初期化子とは?
コレクション初期化子とは、C#でリスト(List)や辞書(Dictionary)などのコレクションを作るときに、わざわざAddメソッドで1つずつ追加しなくても、最初からまとめて要素を入れて初期化できる便利な仕組みです。
例えば、リストを作る場合、普通はこう書きます。
List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
これをコレクション初期化子を使うと、次のように短く書けます。
List<int> numbers = new List<int> { 1, 2, 3 };
1
2
3
とてもスッキリしていますね。まるで最初から中身が入った箱を用意するようなイメージです。
2. 配列とリストでの違い
C#では配列とリストはよく似ていますが、書き方に少し違いがあります。配列は固定の長さを持ち、リストは可変長で要素を自由に追加できます。
配列の場合:
int[] array = { 1, 2, 3 };
リストの場合:
List<int> list = new List<int> { 1, 2, 3 };
見た目は似ていますが、配列は固定サイズ、リストは柔軟に追加できるという大きな違いがあります。
3. Dictionary(辞書型)のコレクション初期化子
Dictionary(ディクショナリ、辞書型)は、キーと値のペアを持つコレクションです。例えば、学生の名前と点数を対応付けるような場合に便利です。
普通の書き方:
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Alice", 90);
scores.Add("Bob", 80);
scores.Add("Charlie", 70);
コレクション初期化子を使うと:
Dictionary<string, int> scores = new Dictionary<string, int>
{
{ "Alice", 90 },
{ "Bob", 80 },
{ "Charlie", 70 }
};
Alice: 90
Bob: 80
Charlie: 70
見やすくスッキリ書けますし、データの内容も一目でわかります。
4. 複雑なオブジェクトを初期化する
コレクション初期化子は、数字や文字だけでなく、クラスのオブジェクトを入れるときにも使えます。例えば、Personクラスを用意して、そのインスタンスをリストにまとめて入れることができます。
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 20 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 30 }
};
Alice (20)
Bob (25)
Charlie (30)
このように書けば、複数のオブジェクトを最初からまとめて用意できるので、コードがとてもシンプルになります。
5. 初期化子を使うメリット
- コードが短くなる(Addを何回も書かなくてよい)
- 見やすい(どんなデータが入っているのか一目でわかる)
- 修正が簡単(新しい要素を追加・削除しやすい)
特にプログラミング初心者にとっては、シンプルで見やすいコードを書くことが大切です。C#のコレクション初期化子はその助けになる便利な仕組みです。
まとめ
ここまでC#のコレクション初期化子についてじっくり学んできましたが、あらためて振り返ってみると、配列やリストや辞書のようなよく使うコレクション構造を手早く整える方法として、とても自然に取り入れられる記述方法だと感じられたのではないでしょうか。とくに初心者のうちは、要素を一つずつ追加していく処理を書くたびに、どうしてこんなに長くなるのだろうと戸惑うことも多いものですが、初期化子を使うことで、まさに箱の中身を最初から用意してしまうような感覚で、必要な情報を整理しながら記述できる点が魅力として生きてきます。さらに、複雑なオブジェクトをまとめて作成するときにも負担が減り、コード全体の見通しが良くなるため、読みやすさという観点でも役立つ便利な仕組みでした。リストのように柔軟に追加できる構造でも、配列のように決まった個数を最初から入れておきたい場合でも、見やすく整った形で扱えることが理解できたはずです。
コレクション初期化子の使い方をもう一度おさらい
とくに印象に残りやすいのは、リストを作成する場合の書き方です。従来のようにAddを何度も書く方法よりも、初期化子を使うと短くまとめられるため、コードを書きながら設定する値をひと目で把握できるところが扱いやすい特徴として挙げられます。辞書型でも同様に、キーと値の組み合わせを最初からまとめて記述できるため、内容を加えたり見直したりするときも視線が散らばりにくく、整理整頓された状態で使えて便利です。複雑なオブジェクトを扱う場合も、プロパティ名と値を同時に設定しながらリストに追加できるので、テストデータを準備したいときにも役に立つ場面が増えていきます。
サンプルプログラムでもう一度確認
class Book
{
public string Title { get; set; }
public int Pages { get; set; }
}
List<Book> books = new List<Book>
{
new Book { Title = "はじめてのC#", Pages = 250 },
new Book { Title = "コレクション入門", Pages = 180 },
new Book { Title = "辞書型活用術", Pages = 210 }
};
この例でもわかるように、それぞれのオブジェクトがどのような値を持つのかが明確に記述されており、読み返したときにも理解しやすい形になっています。初期化子を使うと、こうした複数のインスタンスを扱う場合でも、コードが自然にまとまり、複雑な構造でも視線を動かしやすくなります。とくに細かい値を繰り返し設定していくような場面では、全体の配置を一定に保てるため、バラバラに書いたときよりも格段に見やすくなるメリットがあります。
コードを整理しやすい記述方法として活用していこう
プログラミングに不慣れなうちは、ほんの少しの工夫でコードが読みやすくなる実感を得ることが、後の学習を進めるうえでもとても大切です。コレクション初期化子のように自然な形で記述できる機能を身につけると、複雑に見える処理もまとめて扱えるようになり、見た目の負担が減るだけでなく、間違いに気づきやすくなる効果もあります。配列やリストや辞書型のように基本となる構造を扱うときにこそ、こうした書き方が力を発揮しますので、ぜひ自分のコードの中で活かしてみてください。慣れてくれば、初期化子を使わない書き方に戻る理由がほとんどなくなるほど自然な記述として馴染んでいくことでしょう。
生徒
「こうして振り返ってみると、初期化子って思っていた以上に使いやすかったです。最初からデータをまとめて書いておくと、あとから見返すときにも理解しやすいですね。」
先生
「その通りです。値をひとつずつAddで追加していく方法も間違いではありませんが、初期化子を使うことでコードの意図がよく見えるようになります。とくに辞書型のような構造では、キーと値の組み合わせが一目でわかりますよね。」
生徒
「はい。複雑なオブジェクトでもきれいに並べられるので、いま何を作っているのか理解しやすくなった気がします。」
先生
「その調子です。コードを整える工夫を覚えていくと、作業が楽になっていきますから、これからも積極的に活用していきましょう。」