簡體   English   中英

CodeGo.net>如何將對象列表保存到文本文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM