【问题标题】:Save List<> in .txt file将列表 <> 保存在 .txt 文件中
【发布时间】:2020-06-07 11:50:26
【问题描述】:

我实际上正在学习 c#,但在将我的 List 保存到文件时遇到了问题。我花了几个小时寻找答案,但我没有找到它(也许我看错了)。我有“CS0030 C# Cannot convert type to 'string'”错误(foreach 循环标记了这个错误)。 有人可以告诉我我做错了什么或给我一些建议吗? 谢谢

private void SaveButton_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.FileName = "*.txt";
            dlg.DefaultExt = "txt";

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                Stream fileStream = dlg.OpenFile();
                TextWriter writer = new StreamWriter(fileStream);

                foreach(string s in list2)
                {
                    writer.WriteLine(s);
                }
            writer.Close();
            }
            dlg.Dispose();
        }

list2 是 list1 的副本,其中用户添加了一些元素。

【问题讨论】:

标签: c# file save


【解决方案1】:

如果list2 定义为List&lt;SomeClass&gt;,您必须在foreach 中显式指定类型,如SomeClass s 或使用var s 并让编译器确定它。

// or foreach(SomeClass s in list2)
foreach(var s in list2)
{
   writer.WriteLine(s);
}

--编辑

TextWriter.WriteLine 有很多重载,当您指定 object it will call internally its toString() method 时,这可能不是您想要的。

重载数量当然取决于 .NET Framework/.NET Core 版本。

【讨论】:

  • 这无济于事,因为WriteLine 需要一个字符串,您只是将问题移到了循环体内。
  • 更新答案。
  • 是的,但如果没有覆盖 ToString(),它只会显示类型名称。 OP 必须提供更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多