[英]c# - How to save List of objects into a text file
我有一個簡單的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號和名稱顯示在文本文件中?
添加“ 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}";
}
}
線
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}";
}
}
如果您實際上想以某種方式保存列表,以后可以再次加載它,則可能需要閱讀有關序列化的信息 。 有多種簡單的方法可以存儲和加載不同格式的對象(例如xml,二進制文件等)。
覆蓋類的toString()
class Person
{
private string nric;
private string name;
public override string ToString()
{
return name + " " + nric;
}
}
然后(無需創建StreamWriter):
File.WriteAllLines("PersonFile.txt", pList);
您只需打印對象的類型。
嘗試這個:
Tw.WriteLine($"Id: {p.nric}, Name: {p.name}");
您可以向Person
類添加功能
public string getPerson()
{
return this.nric + " "+ thisname;
}
並改變
tw.WriteLine(p);
至
call tw.WriteLine(p.getPerson());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.