カテゴリ: C# 更新日: 2026/01/27

C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方

C#のオブジェクト初期化子の便利な使い方を紹介
C#のオブジェクト初期化子の便利な使い方を紹介

先生と生徒の会話形式で理解しよう

生徒

「C#でオブジェクトを作るとき、たくさんのコードを書くのが面倒です…。」

先生

「そんなときは“オブジェクト初期化子”を使うと便利ですよ。」

生徒

「オブジェクト初期化子? それって何ですか?」

先生

「コードをスッキリ書ける仕組みなんです。順番に見ていきましょう!」

1. オブジェクトとは何かをおさらい

1. オブジェクトとは何かをおさらい
1. オブジェクトとは何かをおさらい

まずは「オブジェクト」について簡単に説明します。C#では、クラス(設計図)を使って、何かの情報や動作をまとめて扱えるようにします。そして、その設計図から作られた実際のデータを「オブジェクト」と呼びます。

たとえば、「車」というクラスがあれば、それを元に「赤い車」や「青い車」といった具体的な車の情報をもったオブジェクトを作ることができます。

2. オブジェクトの通常の初期化方法

2. オブジェクトの通常の初期化方法
2. オブジェクトの通常の初期化方法

次に、通常の方法でオブジェクトを初期化する書き方を見てみましょう。下記のように、プロパティ(=情報)を1つずつ代入する必要があります。


class Person
{
    public string Name;
    public int Age;
}

Person p = new Person();
p.Name = "たろう";
p.Age = 20;

このように書くと、オブジェクトを作ってから、1行ずつ値を設定する必要があります。

3. オブジェクト初期化子でスッキリ書く

3. オブジェクト初期化子でスッキリ書く
3. オブジェクト初期化子でスッキリ書く

オブジェクト初期化子を使うと、もっと簡単に一括で初期化できます。以下のように、newでオブジェクトを作成する際に、同時にプロパティの値を設定できます。


Person p = new Person
{
    Name = "たろう",
    Age = 20
};

この書き方なら、オブジェクト作成とプロパティ設定がセットでできるので、とても読みやすくなります。

4. オブジェクト初期化子の仕組みとポイント

4. オブジェクト初期化子の仕組みとポイント
4. オブジェクト初期化子の仕組みとポイント

この「オブジェクト初期化子」は、実際にはオブジェクトを作ったあとに、プロパティへ順番に値を代入しています。見た目はスッキリしていますが、内部ではちゃんと個別に代入されているのです。

この機能を使うためには、プロパティやフィールドがpublicになっている必要があります。

5. コンストラクタと組み合わせることも可能

5. コンストラクタと組み合わせることも可能
5. コンストラクタと組み合わせることも可能

「コンストラクタ」とは、オブジェクトを作成するときに自動的に呼び出される特別な関数のことです。実は、オブジェクト初期化子はこのコンストラクタと組み合わせて使うこともできます。


class Person
{
    public string Name;
    public int Age;

    public Person(string name)
    {
        Name = name;
    }
}

Person p = new Person("じろう")
{
    Age = 25
};

このように、コンストラクタで名前だけ設定し、残りの情報は初期化子で設定するという柔軟な使い方ができます。

6. 配列やリストと組み合わせて使う

6. 配列やリストと組み合わせて使う
6. 配列やリストと組み合わせて使う

オブジェクト初期化子は、複数のオブジェクトをリストにまとめたいときにも便利です。例えば、複数のPersonオブジェクトを一気に初期化してリストに入れることができます。


List<Person> people = new List<Person>
{
    new Person { Name = "さぶろう", Age = 30 },
    new Person { Name = "しろう", Age = 35 }
};

このように書くことで、読みやすくて管理しやすいコードになります。

7. オブジェクト初期化子の注意点

7. オブジェクト初期化子の注意点
7. オブジェクト初期化子の注意点
  • 初期化子で設定できるのはpublicなプロパティやフィールドだけです。
  • 一度初期化子で設定した値を、あとから変更することもできます。
  • 自動プロパティ(get; set;)と非常に相性が良いです。

コードをすっきりさせて、読みやすく保つためにも積極的に活用していきましょう!

8. 出力結果の例

8. 出力結果の例
8. 出力結果の例

先ほどのリストに入れたPersonの名前を表示してみましょう。


foreach (var person in people)
{
    Console.WriteLine(person.Name + "さんの年齢は" + person.Age + "歳です。");
}

さぶろうさんの年齢は30歳です。
しろうさんの年齢は35歳です。

まとめ

まとめ
まとめ

C#におけるオブジェクト初期化子は、初心者にもわかりやすくコードを簡潔に保つための便利な記法です。従来のようにオブジェクトを作成してからプロパティを1つずつ設定するのではなく、newキーワードと同時に複数の値を一括で設定できるため、コードが読みやすく保守もしやすくなります。

特に、プロパティの設定が多くなる複雑なクラスや、配列・リストでまとめてオブジェクトを生成したい場面では、オブジェクト初期化子の力を発揮します。記事の中でも紹介したように、publicなプロパティやフィールドが対象である点をおさえておけば、さまざまな状況で安全かつ効率的に使うことができます。

また、コンストラクタとオブジェクト初期化子を組み合わせることで、一部の初期値をコンストラクタで設定しながら、残りの値は初期化子で追加設定するという柔軟なスタイルも可能になります。これにより、コードの表現力は大きく広がり、より実用的なアプリケーション開発に活かすことができます。

リストやコレクションと組み合わせた書き方も、初心者が習得しておくと良いテクニックです。複数のデータを扱う際に、見通しのよい構造で記述できるため、可読性の高いコードにつながります。

以下は、学んだ内容を整理したサンプルです。


class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
}

List<Book> library = new List<Book>
{
    new Book { Title = "吾輩は猫である", Author = "夏目漱石" },
    new Book { Title = "銀河鉄道の夜", Author = "宮沢賢治" }
};

foreach (var book in library)
{
    Console.WriteLine(book.Title + "(著者:" + book.Author + ")");
}

このように、C#のオブジェクト初期化子は、オブジェクトの生成と値の代入をシンプルにまとめ、コードの意図をわかりやすく伝える手段となります。開発の現場でも頻繁に使われる記法なので、しっかりと理解しておきましょう。

最後に注意点として、初期化できるのはpublicなプロパティ・フィールドに限られる点、読み取り専用(readonly)の項目には代入できない点、コンストラクタとの併用時には順番に注意が必要な点などがあります。これらを理解しておくと、トラブルなく活用できます。

今回の記事を通じて、C#のオブジェクト初期化子という機能が、シンプルながら非常に強力な表現方法であることを体感できたと思います。今後の学習や開発でぜひ活かしていきましょう。

先生と生徒の振り返り会話

生徒

「先生、オブジェクト初期化子ってすごく便利ですね!前よりもコードが短くなって読みやすくなりました。」

先生

「その通り。コードを見た人が、すぐに何をしているか理解できるというのはとても大事なことなんだよ。」

生徒

「コンストラクタと組み合わせられるってところも、柔軟に使えていいなと思いました。」

先生

「うん。初期値だけをコンストラクタに任せて、細かい設定は初期化子で済ませるとスッキリするよね。」

生徒

「リストでまとめてオブジェクトを作るときにも使えるなんて知らなかったです。実務でも役立ちそう!」

先生

「そうそう、読みやすいコードは信頼されるコードだよ。これからもどんどん活用していこう。」

生徒

「はい!次はLINQとかと組み合わせてみたいです!」

先生

「それは良い目標だね。少しずつ実践しながら覚えていこう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

C#のオブジェクト初期化子とは何ですか?初心者向けに意味と使い方を教えてください。

C#のオブジェクト初期化子とは、オブジェクトを生成すると同時にプロパティの値をまとめて設定できる便利な書き方で、コードを簡潔に保つために使われます。
カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方