C#中的词典

本文关键字: | 更新日期: 2023-09-27 18:28:21

该程序旨在读取csv文件并从中创建一个字典,然后用于将键入的单词翻译到文本框(txtINPUT)中,并将结果输出到另一个文本框(txtOutput)中。

该程序不翻译任何内容,并且总是输出"未找到翻译"我以前从来没有用过字典课,所以我不知道问题出在哪里。

谢谢你能给我的任何帮助。

    Dictionary<string, string> dictionary; 
    private void CreateDictionary()
    {
        //Load file
        List<string> list = new List<string>();
        using (StreamReader reader = new StreamReader("dictionarylist.csv"))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                //Add to dictionary
                dictionary = new Dictionary<string, string>();
                string[] split = line.Split(',');
                dictionary.Add(split[0], split[1]);
            }
        }
    }
        private void btnTranslate_Click(object sender, EventArgs e)
    {
        CreateDictionary();
        string outputString = null;
        if (dictionary.TryGetValue(txtInput.Text, out outputString))
        {
            txtOutput.Text = outputString; 
        }
        else
        {
            txtOutput.Text = ("No translation found");
        }
    }

C#中的词典

您在每个循环周期创建一个Dictionary的新实例,基本上每次读取一行时都会覆盖它。将此行移出循环:

// Instantiate a dictionary
var map = new Dictionary<string, string>();

还有,为什么不加载字典一次,你加载它的每个按钮点击,这是没有效率的。

>=.NET 3)同样使用LINQ ToDictionary():

usign System.Linq;
var map = File.ReadAllLines()
              .Select(l =>
               {
                    var pair = l.Split(',');
                    return new { First = pair[0], Second = pair[1] }
               })
              .ToDictionary(k => k.First, v => v.Second);

在while循环中,每次通过都会创建一个新字典

您想要创建一个字典,并将所有条目添加到其中:

while ((line = reader.ReadLine()) != null)
{
    //Add to dictionary
    dictionary = new Dictionary<string, string>();  /* DON'T CREATE NEW DICTIONARIES */
    string[] split = line.Split(',');
    dictionary.Add(split[0], split[1]);
}

你应该这样做:

List<string> list = new List<string>();
dictionary = new Dictionary<string, string>();  /* CREATE ONE DICTIONARY */
using (StreamReader reader = new StreamReader("dictionarylist.csv"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        string[] split = line.Split(',');
        dictionary.Add(split[0], split[1]);
    }
}
相关文章:
  • 没有找到相关文章