我有一个简单的Windows窗体应用程序。基本上,我想保存用户输入的ID号和名称。我有一个Person类:
class Person
{
private string nric;
private string name;
public Person(string nric, string name)
{
this.nric = nric;
this.name = name;
}
和.cs文件:
private void save_Click(object sender, EventArgs e)
{
List<Person> pList = new List<Person>();
Person p1 = new Person(nric.Text, name.Text);
pList.Add(p1);
using (TextWriter tw = new StreamWriter("PersonFile.txt"))
{
foreach (Person p in pList)
{
tw.WriteLine(p);
}
tw.Close();
}
}
当我尝试运行代码时,这是PersonFile.txt中显示的输出:
Testing.Person
如何使ID号和名称显示在文本文件中?
答案 0 :(得分:7)
添加&#34; ToString&#34;方法
class Person
{
private string nric;
private string name;
public Person(string nric, string name)
{
this.nric = nric;
this.name = name;
}
public override string ToString()
{
return $"{nric} {name}";
}
}
答案 1 :(得分:1)
该行
tw.WriteLine(p);
只需调用p.ToString()
并将返回的字符串写入您的文件。 ToString()
的默认实现返回对象类型的名称。
解决问题的一种方法是覆盖ToString()
:
class Person
{
private string nric;
private string name;
public Person(string nric, string name)
{
this.nric = nric;
this.name = name;
}
public override string ToString()
{
return $"{nric} {name}";
}
}
如果您确实希望以稍后再次加载列表的方式保存列表,则可能需要阅读serialization。有很简单的方法来存储和加载不同格式的对象(如xml,二进制等)。
答案 2 :(得分:0)
覆盖类
的toString()class Person
{
private string nric;
private string name;
public override string ToString()
{
return name + " " + nric;
}
}
然后(不需要创建StreamWriter):
File.WriteAllLines("PersonFile.txt", pList);
答案 3 :(得分:0)
您只需打印对象的类型。
试试这个:
Tw.WriteLine($"Id: {p.nric}, Name: {p.name}");
答案 4 :(得分:0)
您可以将功能添加到Person
类
public string getPerson()
{
return this.nric + " "+ thisname;
}
并更改
tw.WriteLine(p);
到
call tw.WriteLine(p.getPerson());