c#从字典中获取值

时间:2017-03-16 15:41:24

标签: c# dictionary

我试图制作一个基本程序,用户输入一个字母并输出它的莫尔斯代码等价物。我的问题是该程序似乎无法找到密钥。任何修复?请记住我尽量保持简单。

Dictionary<string, string> values = new Dictionary<string, string>();
values.Add("A", ".-");
values.Add("B", "-...");
values.Add("C", "-.-.");
// ...
values.Add("8", "---..");
values.Add("9", "----.");
values.Add("0", "-----");

Console.WriteLine("Pleae enter the value you wish to convert"); 
string translate = Console.ReadLine();
string translateupper = translate.ToUpper();
if (values.ContainsKey(translateupper) == true)
{
    string Converted = (values["translateupper"].ToString());
    Console.WriteLine(Converted);
}

1 个答案:

答案 0 :(得分:5)

删除变量名称旁边的引号:

string Converted = (values[translateupper].ToString());

注意:

  • 字典条目的值是字符串 - 您不需要将其转换为字符串。
  • 为避免在字典中搜索两次条目,您可以使用TryGetValue方法
  • 在C#
  • 中使用 camelCase 名称作为变量
  • 使用字典初始值设定项为字典
  • 提供初始值
  • 考虑使用Dictionary<char,string>,因为您的密钥实际上是字符

记住笔记:

var values = new Dictionary<string, string> {
      ["A"] = ".-",
      ["B"] = "-...",
      ["C"] = "-.-.",
      // etc
};

string translate = Console.ReadLine();
string converted;
if (values.TryGetValue(translate.ToUpper(), out converted))
    Console.WriteLine(converted);
// you can add 'else' block to notify user that translation was not found

使用C#7.0,您可以声明变量。