C#のDictionary
型は、キーと値のペアでデータを管理する便利なコレクションです。データを効率的に検索・操作できるため、多くの場面で活躍します。本記事では、Dictionary
型の基本的な使い方から、foreach
ループを活用してデータを操作する方法を詳しく解説します。
こんな方にオススメ!
- Dictionary型を初めて使う人
foreach
ループの実践的な使い方を学びたい方- Dictionary型の値を変更しようとしたらエラーが出る
Dictionary型の基本知識
Dictionary
は、キー(Key)と値(Value)のペアを持つコレクションです。キーを指定すると対応する値を参照できます。値は何度でも変更できますが、キーは一度設定したら変えられません。
以下に基本的な使い方を示します。
using System.Collections.Generic;
using UnityEngine;
public class DictionaryExample : MonoBehaviour
{
// Dictionary型を定義: 整数のキー(int)と文字列の値(string)を持つ
public Dictionary<int, string> Dic = new Dictionary<int, string>();
public void AddData()
{
// 辞書にキーと値を追加
Dic.Add(0, "Sunday");
Dic.Add(1, "Monday");
Dic.Add(2, "Tuesday");
Dic.Add(3, "Wednesday");
}
}
Dic.Add(key, value)
を使ってデータを追加。- キーは一意である必要があり、重複すると例外が発生します。
foreachループの基礎
foreach
ループを使うと、Dictionary
内のデータを簡単に処理できます。
キーと値のペアを取得する方法
以下のコードは、すべてのキーと値を出力する例です。
foreach (var pair in Dic)
{
Debug.Log("Key: " + pair.Key + ", Value: " + pair.Value);
}
・実行結果:
Key: 0, Value: Sunday
Key: 1, Value: Monday
Key: 2, Value: Tuesday
Key: 3, Value: Wednesday
KeysプロパティとValuesプロパティの活用
Dictionary
には、キーだけ、または値だけを取り出すプロパティがあります。
すべてのキーを取得
foreach (var key in Dic.Keys)
{
Debug.Log("Key: " + key);
}
すべての値を取得
foreach (var value in Dic.Values)
{
Debug.Log("Value: " + value);
}
・実行結果:
・Keys: 0, 1, 2, 3
・Values: Sunday, Monday, Tuesday, Wednesday
実用例: Dictionaryの値を一括更新
foreach
ループを使って、すべての値を一括で更新する方法を見てみましょう。
foreach (var key in Dic.Keys.ToList())
{
Dic[key] = "holiday";
}
foreach (var pair in Dic)
{
Debug.Log("Key: " + pair.Key + ", Value: " + pair.Value);
}
・実行結果:
Key: 0, Value: holiday
Key: 1, Value: holiday
Key: 2, Value: holiday
Key: 3, Value: holiday
なぜToList()が必要?
foreachの処理中にコレクションを変更させようとするとエラーが発生するようになっています。これはforeachを適切に処理するためです。
そのため.ToList()で複製させてください。複製しても値は変更されます。
エラー:InvalidOperationException: Collection was modified; enumeration operation may not execute.
foreachループの注意点
・キーの重複は禁止: Dictionary
内で同じキーを持つデータを追加しようとすると例外が発生します。
・列挙中の変更に注意:
直接辞書を変更するとエラーになるため、ToList()
などを活用しましょう。
・パフォーマンス:
非常に大きな辞書では、ループの回数や操作がパフォーマンスに影響を与える場合があります。
まとめ
この記事では、C#のDictionary
型を使ったforeach
ループの基本と応用を解説しました。キーと値を効率的に操作する方法を学ぶことで、データ処理がよりスムーズになるはずです。
次は、実際にDictionary
を使ったアプリケーションを作成しながら、学んだ内容を活用してみてください!
コメント