【C#】Dictionaryのキーの存在チェックを行う方法を解説!

スポンサーリンク

C#において頻繁に使用されるコレクションの一つに、Dictionary があります。これは、キーと値のペアを管理するデータ構造であり、例えばユーザー名とスコアのように、何かを「対応づけて保存」したい場面で非常に役立ちます。

しかし、Dictionary を使う際に注意しなければならない点があります。それは「存在しないキーにアクセスしようとすると例外が発生する」ということです。初心者の方がつまずきやすいポイントでもありますね。

本記事では、C#の Dictionary において、特定のキーが存在するかどうかを安全に確認する方法について、基本から丁寧に解説してまいります。「ContainsKey」と「TryGetValue」という2つの主要なメソッドの使い方を中心に、実用的なサンプルも交えながらご紹介いたします。

それでは、一緒に確実で安全なDictionary操作の第一歩を踏み出していきましょう。

Dictionaryの基本的な使い方は、こちらで紹介をしております。ぜひご覧ください。

存在チェックの方法1:ContainsKeyメソッド

最も基本的な方法は、ContainsKey メソッドを使うことです。
これは、指定したキーが Dictionary に存在するかどうかを bool 値で返してくれるシンプルなメソッドです。

if (scores.ContainsKey("Alice"))
{
    Console.WriteLine("Aliceのスコアは存在します。");
}

このように事前に存在を確認しておけば、安心して値を取り出すことができます。
特に、入力されたキーが事前に分からない場面(例:ユーザー入力)では、必ず ContainsKey でチェックする習慣をつけておきたいところです。

存在チェックの方法2:TryGetValueメソッド

もう一つの便利な方法が、TryGetValue を使うことです。
このメソッドは「キーが存在するか確認しつつ、値の取得まで一度に行う」ことができるという優れモノです。

if (scores.TryGetValue("Bob", out int score))
{
    Console.WriteLine($"Bobのスコアは {score} 点です。");
}
else
{
    Console.WriteLine("Bobのスコアは見つかりませんでした。");
}

ご覧のとおり、TryGetValue を使うことで、存在確認と値の取り出しが一体化され、コードがすっきりとします。
ContainsKey → 取得 という2段階よりも効率的ですので、「値も必要」な場合はこちらを積極的に使ってみましょう。

存在チェックの注意点

大文字・小文字の違いに注意

Dictionary<string, T> では、デフォルトではキーの比較は「大文字・小文字を区別」します。

var dict = new Dictionary<string, string>();
dict["Apple"] = "果物";

Console.WriteLine(dict.ContainsKey("apple")); // false(大文字・小文字が違うため)

もし大文字・小文字を無視したい場合は、StringComparer.OrdinalIgnoreCase を使いましょう。

var dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);

存在しないキーにアクセスすると例外になる

何度でも強調しておきたいのですが、存在しないキーを dict[key] で直接アクセスすると例外(KeyNotFoundException)が発生します。
開発中にクラッシュしないよう、必ず存在チェックを行うように心がけましょう。

まとめ

  • Dictionary を使う際には、キーの存在チェックが不可欠です。
  • 単に存在を確認したい場合は ContainsKey を、値も一緒に欲しい場合は TryGetValue を使いましょう。
  • 大文字・小文字の違いや例外には十分注意。

C#の Dictionary を安全に、そして快適に使いこなすために、今回ご紹介した内容をぜひ活用してみてください!

C#
スポンサーリンク
なんくるをフォローする

コメント

タイトルとURLをコピーしました