从文本文件

时间:2017-06-07 08:21:30

标签: c# text-files instances

我试图找到一种从文件创建类实例的方法,并且还使用该文件作为为类属性赋予其值的方法。我可以手动输入所有信息,但最好通过一个文件来完成,这样我就可以改变文件,这将改变我的程序。

到目前为止,这是代码...当我运行它时,它说

class Program
{
    class dish
{
     public class starters { public string starter; public string alteration; }


    static void Main(string[] args)
    {
        List<dish.starters> starter = new List<dish.starters>();
        using (StreamReader reader = File.OpenText(@"D:\Visual Studio\Projects\Bella Italia\Food\Starters.txt"))
        {
            IDictionary<string, dish.starters> value = new Dictionary<string, dish.starters>();
            while (!reader.EndOfStream)
            {
                value[reader.ReadLine()] = new dish.starters();
                value[reader.ReadLine()].starter = reader.ReadLine();
            }
            foreach(var x in value.Values)
            {
                Console.WriteLine(x.starter);
            }

        }

        Console.ReadLine();

    }
}

}

当我尝试运行它时,它说

异常未处理 System.Collections.Generic.KeyNotFoundException:'字典中没有给定的键。'

1 个答案:

答案 0 :(得分:1)

你在这里连续读两行。第二行可能没有字典中的相关条目(并且您也不希望复制):

value[reader.ReadLine() /*one*/] = new dish.starters();
value[reader.ReadLine() /*two*/].starter = reader.ReadLine();

将密钥存储在变量中并重用:

string key = reader.ReadLine();

value[key] = new dish.starters();
value[key].starter = reader.ReadLine();

或者创建对象并稍后分配:

string key = reader.ReadLine();

var starters = new dish.starters();
starters.starter = reader.ReadLine()

value[key] = starters;