C# 辞書の値を取得する

  • 作成日 2022.12.22
  • C#
C# 辞書の値を取得する

C#で、辞書の値を取得するサンプルコードを記述してます。「キー」名を指定することで取得できます。指定した「キー」が存在しない場合は、エラーとなります。

環境

  • OS windows11 pro 64bit
  • Microsoft Visual Studio Community 2022 Version 17.2.6

辞書の値を取得

辞書の値を取得するには、「キー」を使用します。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {

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

            dict[0] = "aaa";
            dict[1] = "bbb";
            dict[2] = "ccc";
            
            System.Console.WriteLine(dict[0]); // aaa
            System.Console.WriteLine(dict[1]); // bbb
            System.Console.WriteLine(dict[2]); // ccc

        }

    }
}

実行結果

存在しないキーを指定

存在しないキーを指定するとエラーが発生します。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {

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

            dict[0] = "aaa";
            dict[1] = "bbb";
            dict[2] = "ccc";
            
            System.Console.WriteLine(dict[3]);
       // System.Collections.Generic.KeyNotFoundException: 'The given key '3' was not present in the dictionary.'

        }

    }
}

存在チェックをすれば、エラーは回避できますが、キーが存在する場合は、二度検索処理が行われることになります。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {

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

            dict[0] = "aaa";
            dict[1] = "bbb";
            dict[2] = "ccc";

            if (dict.ContainsKey(3))
            {

                System.Console.WriteLine(dict[3]);

            }

        }

    }
}

この問題は「TryGetValue」を使用することで解決します。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {

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

            dict[0] = "aaa";
            dict[1] = "bbb";
            dict[2] = "ccc";

            var val = "";

            if (dict.TryGetValue(3, out val))
            {
                System.Console.WriteLine(dict[3]);
            }

            if (dict.TryGetValue(0, out val))
            {
                System.Console.WriteLine(val); // aaa
            }

        }

    }
}