【发布时间】:2014-09-11 17:20:28
【问题描述】:
我一直在学习 C# 中的集合命名空间,所以一直在做一些小的自制项目来学习。
我制作了一个赛车应用程序,您可以在其中输入赛车手的姓名、赛车和地点,然后将其存储在数组列表中。我可以将数组列表的内容提取到控制台窗口,但我想知道如何编写并将其保存到文本文件(有点像迷你数据库)。
我知道存储在数组列表中的每个元素都存储为一个对象,因此需要进行转换以将它们提取为适当的类型。
这是我的数组列表处理输入的方式:
class People
{
public string Name { get; set; }
public string Car { get; set; }
public string Place { get; set; }
public ArrayList myList = new ArrayList();
public void ShowList()
{
for (int i = 0; i < myList.Count; i++)
{
Console.WriteLine("" + myList[i] + "\n|");
}
}
public void AddToList()
{
myList.Add("Name: " + Name + " Car: " + Car + " Place: " + Place);
}
}
这是我尝试将 myList 保存到文本文件的方式:
private void button3_Click(object sender, EventArgs e)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Keil\Documents\Visual Studio 2013\Projects\CarRacingArrList\racers.txt"))
{
file.WriteLine(person.myList.ToString());
}
}
我添加了 ToString() 方法将 myList 中的所有元素转换为字符串。
我进入文本文件的输出是这样的:System.Collections.ArrayList
是无效转换的结果还是我错过了什么?
谢谢
【问题讨论】:
-
您需要分别编写每个元素。顺便说一句,请改用generic collections(在.NET 2.0 中引入)或
ArrayList。您会发现很少需要使用ArrayList来存储对象列表。 -
此外,如果此代码的目的是将数据持久保存到磁盘以便您稍后可以将其加载回来,请查看 .NET 中的 various serialization alternatives(例如
XmlSerializer或DataContractSerializer),因为它将解决您需要手动解决的许多问题。 -
附带说明:您可能想弄清楚如何创建一个 person 类,以便在 People 类中只有一个
List<Person> People或List<Person>。原因是名称、汽车和地点似乎都是一个人的属性。
标签: c# file-io collections arraylist