C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のListとDictionaryの違いとは?使い分けのポイントを解説

C#におけるListとDictionaryの基本的な違い

C#にはさまざまなコレクションクラスが用意されていますが、その中でも特によく使われるのが「List」と「Dictionary」です。両者はいずれもSystem.Collections.Generic名前空間に属するジェネリック型のコレクションですが、データの格納方法やアクセス方法が大きく異なります。

Dictionary(ディクショナリ)とは

Dictionaryは、キーと値のペアを管理するコレクションです。Dictionary<TKey, TValue>の形式で宣言され、System.Collections.Generic名前空間に含まれています。各要素は一意なキーに関連付けられており、キーを指定することで高速に値へアクセスできます。なお、存在しないキーにアクセスしようとするとエラー(KeyNotFoundException)が発生する点に注意が必要です。

Dictionaryはキーと値のペアの集合として次のように定義します。

Dictionary<string, int> d = new Dictionary<string, int>();

d.Add("squash", 1);
d.Add("football", 2);
d.Add("rugby", 3);

List(リスト)とは

Listは、任意のデータ型を格納できるジェネリッククラスです。List<T>の形式で宣言し、追加した順序が保持されるため、インデックス番号を使って各要素にアクセスできます。また、同じ値を持つ要素を複数格納することも可能です。

Listはアイテムのグループとして次のように作成します。

List<string> myList = new List<string>() {
    "Maths",
    "English",
    "Science"
};

使い分けのポイント

Listはループ処理がシンプルで高速であり、インデックスによる要素へのアクセスも容易です。そのため、順序を持つデータ列や単純な一覧を扱う場合に適しています。

一方、Dictionaryはキーによる検索が非常に高速であるため、「キーから対応する値を素早く取り出したい」というケースに向いています。キーの一意性が保証される点も大きな特徴です。

このように、ListとDictionaryはそれぞれ得意な用途が異なります。データの性質やアクセス方法に応じて適切なコレクションを選択することが、効率的なC#プログラミングにつながります。

  1. DirectX11とDirectX12の違いを徹底解説!ゲーマーが知っておくべきポイント

    DirectXは、ソフトウェアがマルチメディアコンテンツを描画し、グラフィックハードウェアと通信するために使用されるAPI(アプリケーションプログラミングインターフェース)のコレクションです。DirectXの主要な構成要素であるDirect3Dは、ソフトウェアとグラフィックスハードウェア間の通信を担っています。ハードウェアは製品ごとに異なるため、標準化された関数や呼び出しのライブラリを通じてグラフィックカードと通信することで、ゲーム開発を大幅にスピードアップできます。これは「ハードウェア抽象化」と呼ばれ、APIの最も重要な役割となっています。車に例えてみましょう。1台の車の運転ができれば、ほぼ

  2. Pythonのリストとタプルの違いとは?特徴と使い分けのポイントを解説

    Pythonでは複数の値をまとめて扱えるシーケンス型として、リスト(list)とタプル(tuple)がよく使われます。どちらも似たような役割を持っていますが、決定的な違いがあります。それはタプルが「不変(immutable)」であるという点です。 最大の違い:タプルは変更できない タプルは一度作成すると、その中の値を後から変更することができません。一方、リストは「可変(mutable)」なので、作成後でも要素の追加・削除・変更が自由に行えます。 # リスト:変更可能 my_list = [1, 2, 3] my_list[0] = 10 # 正常に変更できる # タプル:変更不可 my_