Ami*_*inM -1 c# dictionary exception
我想使用Dictionary和Action调用一些静态方法
这里是我的代码:
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)
但是当我想使用输入值访问密钥时,我得到异常
怎么了?
Console.Read 返回字符代码,而不是实际值.
例如,如果键入"1",Console.Read则返回49.
您需要一些转换来检索int所需的值:
var input = Console.Read();
var job = DoJob[CharUnicodeInfo.GetDecimalDigitValue((char)input)];
Run Code Online (Sandbox Code Playgroud)