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

C#のコレクションとは?List・Dictionary・HashSetの基本を解説

C#のコレクションとは?List・Dictionary・HashSetの基本を解説
C#のコレクションとは?List・Dictionary・HashSetの基本を解説

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

生徒

「先生、C#でたくさんのデータをまとめて扱いたいときはどうしたらいいですか?」

先生

「そのときに便利なのがコレクションと呼ばれる仕組みです。データをひとまとめにして管理できますよ。」

生徒

「コレクションって具体的にはどんなものですか?」

先生

「代表的なものに、ListDictionaryHashSetがあります。それぞれ役割が違うので順番に説明しますね。」

1. C#のコレクションとは?

1. C#のコレクションとは?
1. C#のコレクションとは?

C#のコレクション(Collection)とは、複数のデータをまとめて扱うための仕組みです。プログラミング未経験の方にわかりやすく説明すると、コレクションは「データを入れる箱や棚」のようなイメージです。普通の変数では1つの値しか入れられませんが、コレクションを使えばたくさんの値をまとめて管理できます。

例えば、「クラスの出席番号リスト」や「電話帳の名前と電話番号の組み合わせ」などをプログラムで表現するときにコレクションが役立ちます。

コレクションにはいろいろな種類がありますが、C#でよく使うのは以下の3つです。

  • List(順番付きのリスト)
  • Dictionary(キーと値のペアで管理する辞書)
  • HashSet(重複を許さない集合)

2. Listの基本(順番が大事なコレクション)

2. Listの基本(順番が大事なコレクション)
2. Listの基本(順番が大事なコレクション)

Listは、順番を持ったデータの集まりです。イメージとしては「番号付きの棚」に物を並べるようなものです。リストに入れたデータは追加した順番が保持され、同じ値を何度も入れることができます。

例えば、生徒の名前を順番に並べたいときに使います。


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> names = new List<string>();
        names.Add("太郎");
        names.Add("花子");
        names.Add("次郎");

        foreach (string name in names)
        {
            Console.WriteLine(name);
        }
    }
}

太郎
花子
次郎

Listは「順番が大事」「同じデータを入れてもOK」という特徴があります。

3. Dictionaryの基本(辞書のように管理するコレクション)

3. Dictionaryの基本(辞書のように管理するコレクション)
3. Dictionaryの基本(辞書のように管理するコレクション)

Dictionaryは、データを「キー(見出し)」と「値(内容)」の組み合わせで管理します。これはまさに辞書のようなイメージです。例えば「名前」と「電話番号」をペアにして保存することができます。


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<string, string> phoneBook = new Dictionary<string, string>();
        phoneBook["太郎"] = "090-1111-2222";
        phoneBook["花子"] = "080-3333-4444";

        Console.WriteLine(phoneBook["太郎"]);
    }
}

090-1111-2222

Dictionaryは「名前から電話番号を探す」といった使い方に非常に便利です。キーは重複できませんが、値は重複してもかまいません。

4. HashSetの基本(重複を許さないコレクション)

4. HashSetの基本(重複を許さないコレクション)
4. HashSetの基本(重複を許さないコレクション)

HashSetは、データの「集合(しゅうごう)」を表すコレクションです。同じデータを二度入れても、自動的に1つにまとめられます。例えば「参加者の名簿」など、同じ名前を重複させたくない場合に役立ちます。


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<string> participants = new HashSet<string>();
        participants.Add("太郎");
        participants.Add("花子");
        participants.Add("太郎"); // 重複は無視される

        foreach (string p in participants)
        {
            Console.WriteLine(p);
        }
    }
}

太郎
花子

HashSetは「データを一意に管理したい」「同じものを二度数えたくない」ときに最適です。

5. List・Dictionary・HashSetの違いをイメージで理解しよう

5. List・Dictionary・HashSetの違いをイメージで理解しよう
5. List・Dictionary・HashSetの違いをイメージで理解しよう

ここまで説明した3つのコレクションを、身近な例で比べてみましょう。

  • List = 「順番通りに並べた買い物リスト」
  • Dictionary = 「名前から電話番号を調べる電話帳」
  • HashSet = 「重複を許さない参加者名簿」

どのコレクションを使うかは、データをどう管理したいかによって決まります。順番が大事ならList、キーと値のペアで管理したいならDictionary、重複を避けたいならHashSetを選びましょう。

まとめ

まとめ
まとめ

C#のコレクションであるListやDictionaryやHashSetは、初心者が複数の値を扱うときにとても役立つ仕組みであり、それぞれに順番の管理や重複の扱い方や検索のしやすさなどの特徴があるので、どのような場面でどのコレクションを選ぶべきかを理解しておくことで、大規模な処理や細かいロジックを組み立てるときにも柔軟に対応できるようになることが多く、C#の基本学習の中でも特に大切な部分として意識しておくとよいという点が今回の振り返りで印象に残るところだと思われるため、実際に手を動かしながら使い分けを試してみることで、より自然に使えるようになるはずだと感じられる内容であり、順番が必要なときにはListを、検索を素早く行いたいときにはDictionaryを、重複を避けて管理したいときにはHashSetを選ぶという基本的な判断が身につけば、プログラム全体の見通しもよくなりエラーや動作の不具合にも気づきやすくなるため、これからC#の実践的なプログラムを書くうえで大きな助けになるといえるので、今回の知識をしっかり身につけておくことで後の学習も進めやすくなると思われる状態であるといえる。 また、ListやDictionaryやHashSetはいずれも.NETの基盤に組み込まれた信頼性の高いコレクションなので、安心して利用できるだけでなく、さまざまなメソッドや便利な機能が用意されているため、ただ使い方を覚えるだけではなく、その特徴を理解しながら設計段階で正しく選べるようになることが大切であり、慣れてくると柔軟なデータ操作や拡張しやすいプログラムが書けるようになるため、繰り返し触れて理解を深めていくことが重要だと感じられる。

コレクションの使い分けの実例

ここでは、ListやDictionaryやHashSetを実際のプログラムでどのように使い分けるかがイメージしやすいように、簡単なサンプルプログラムをまとめ直した例を確認しておくことで、振り返りをより深めておきたいと思われる。


// Listで順番を管理
List<string> fruits = new List<string>();
fruits.Add("りんご");
fruits.Add("みかん");
fruits.Add("ぶどう");

// Dictionaryで素早く検索
Dictionary<string, int> scores = new Dictionary<string, int>();
scores["太郎"] = 80;
scores["花子"] = 95;

// HashSetで重複の排除
HashSet<string> uniqueNames = new HashSet<string>();
uniqueNames.Add("太郎");
uniqueNames.Add("花子");
uniqueNames.Add("太郎"); // 無視される

このように、場面ごとに適したコレクションを選ぶことが大切であり、実際の開発でも必要に応じて適切なコレクションを判断する力が求められるため、今回のような基本的な理解を積み重ねていくことで応用しやすい知識として身に付いていくはずである。

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

生徒

「今日の内容で、ListやDictionaryやHashSetの違いがようやく分かってきました。特に、何を基準にして選べばいいのかが理解できたのがよかったです。」

先生

「その調子です。C#ではコレクションをどう使い分けるかがとても重要なので、最初の段階でしっかり基礎が身についていると、これから複雑なプログラムを書くときにも迷わずに設計できるようになりますよ。」

生徒

「たしかに、順番が大切ならList、検索ならDictionary、重複をなくしたいならHashSet、という考え方は分かりやすかったです。今後の実装でも使い分けられそうです。」

先生

「実際の現場でもよく使われる基本知識なので、これから先で扱うコレクションの応用やLINQの処理を学ぶときにもきっと役立ちます。焦らず一つずつ慣れていきましょう。」

生徒

「ありがとうございます。次の学習でも今日の内容を活かしながら進めてみます。」

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

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

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

C#のコレクションとは何ですか?初心者にもわかりやすく知りたいです。

C#のコレクションとは、複数のデータをひとまとめにして扱える仕組みのことで、変数では1つしか値を扱えないところを、コレクションを使うと複数の値を効率よく管理できるようになります。
カテゴリの一覧へ
新着記事
New1
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New2
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New3
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New4
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法