给定的密​​钥不在字典中.C#

Ami*_*inM -1 c# dictionary exception

我想使用DictionaryAction调用一些静态方法
这里是我的代码:

public class  Works
{

    public static void DoWorkA()
    {
        Thread.Sleep(1000);
        Console.WriteLine("Doing Work A");
    }
    public static void DoWorkB()
    {
        Thread.Sleep(2000);
        Console.WriteLine("Doing Work B");
    }
    public static void DoWorkC()
    {
        Thread.Sleep(3000);
        Console.WriteLine("Doing Work C");
    }
}  
Run Code Online (Sandbox Code Playgroud)

这是我的主要方法

 try
        {
            var DoJob = new Dictionary<int, Action>();
            DoJob.Add(1, () => Works.DoWorkA());
            DoJob.Add(2, () => Works.DoWorkB());
            DoJob.Add(3, () => Works.DoWorkC());

            var input = Console.Read();
            var job = DoJob[input];
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);

        }
        Console.ReadKey();  
Run Code Online (Sandbox Code Playgroud)

foreach用来迭代键和密钥存在

 foreach (var item in DoJob)
            {
                Console.WriteLine($"Item {item.Key} has Value {item.Value}");
            }  
Run Code Online (Sandbox Code Playgroud)

字典键显示

但是当我想使用输入值访问密钥时,我得到异常

在此输入图像描述

怎么了?

Kev*_*sse 7

Console.Read 返回字符代码,而不是实际值.

例如,如果键入"1",Console.Read则返回49.

您需要一些转换来检索int所需的值:

var input = Console.Read();
var job = DoJob[CharUnicodeInfo.GetDecimalDigitValue((char)input)];    
Run Code Online (Sandbox Code Playgroud)