C# で辞書キーが存在するかどうかを確認する

Bilal Shahid 2023年1月30日 2022年8月18日
  1. C#try-catch を使用して辞書のキーが存在するかどうかを確認する
  2. C#ContainsKey() を使用して辞書キーが存在するかどうかを確認する
  3. C#TryGetValue() を使用して辞書キーが存在するかどうかを確認する
C# で辞書キーが存在するかどうかを確認する

辞書は、キーと値をマップする傾向があります。これには、特定の値がマップされる特定のキーが含まれています。重複するキーは許可されていません。それが辞書の全体的な目標です。

今日は、キーが辞書にすでに存在するかどうかを確認する方法を見ていきます。

C#try-catch を使用して辞書のキーが存在するかどうかを確認する

まず、特定の各学生 ID を CGPA にマップする students という辞書の作成から始めましょう。

Dictionary<int, double> students = new Dictionary<int, double>();
            students[101] = 3.22;
            students[102] = 3.44;
            students[103] = 2.98;

CGPA は double 形式であると想定されているため、ID と CGPA に対してそれぞれ <TKEY, TVALUE><int, double> として定義しました。

students に学生 102 のエントリが存在するかどうかを調べたいとします。確かにそうですが、私たちにまっすぐに伝えるためのコードが必要です。

そのために、次のように try-catch 例外を使用できます。

try
{
    Console.WriteLine(students[102].ToString());
}
catch(Exception e)
{
    Console.WriteLine("No such key present");
}

出力:

3.44

しかし、学生 104 に対して同じことをしようとすると、次のようになります。

出力:

No such key present

なんで?まあ、ToString() メソッドは null ではない値に対してのみ機能します。学生 104 は null であり、students にエントリがないため、例外が発生します。

そして、例外をスローするのではなく、それをキャッチして、コンソールにそのようなキーはありませんというメッセージを表示する傾向があります。

したがって、キーが存在するかどうかを確認するのに効果的な方法です。しかし、それをもっと簡単にすることはできますか?

C#ContainsKey() を使用して辞書キーが存在するかどうかを確認する

次のコードを確認してください。

if (!students.ContainsKey(104))
{
    Console.WriteLine("No such key present");
}

そのようなキーが存在しないため、これはエラーを提示します。

出力:

No such key present

C#TryGetValue() を使用して辞書キーが存在するかどうかを確認する

次のことを行う場合:

double getval = 0.0;
if (!students.TryGetValue(104 ,out getval))
{
    Console.WriteLine("No such key present");
}

これは、次のように出力を返す傾向があります。

No such key present

TryGetValue() は、キーが存在する場合、その値を取得する傾向があります。値は 2 番目のパラメーターで取得されます。

したがって、out キーワードで送信されます。そして、この値を取得するための変数は、スコープの前に宣言されています。これは getval です。

これらのさまざまなメソッドすべての完全なコードは、以下に含まれています。

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

namespace jinlku_console
{
    class coder
    {
        static void Main(String[] args)
        {
            Dictionary<int, double> students = new Dictionary<int, double>();
            students[101] = 3.22;
            students[102] = 3.44;
            students[103] = 2.98;

            //TRY CATCH BLOCK
            try
            {
                Console.WriteLine(students[104].ToString());
            }
            catch(Exception e)
            {
                Console.WriteLine("No such key present");
            }

            //CONTAINS KEY METHOD
            if (!students.ContainsKey(104))
            {
                Console.WriteLine("No such key present");
            }

            //TRYGETVALUE

            double getval = 0.0;
            if (!students.TryGetValue(104 ,out getval))
            {
                Console.WriteLine("No such key present");
            }
        }
    }
}
Author: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

関連記事 - Csharp Dictionary