C#控制台 - 从数组中输入和删除

时间:2010-12-16 20:00:43

标签: c# arrays

对于我的一个小任务的一部分,我被要求创建一个数组来存储从用户提供的输入中获取的名称和地址,以及以后能够从数组中删除名称和地址。

任何有助于我了解如何实现这一目标的帮助或链接都会非常有用,谢谢。

编辑 - 数组将被设置为地址簿,当打印到屏幕时,它显示如下:“Bloggs,Joe” 它必须是姓,然后是姓。我知道如何获取和存储用户将提供的信息,包括他们的姓名和地址,但我仍然坚持如何将其添加到数组中。数组不必是无限的,因为我应该按照我希望的大小分配数组。

在程序开始时它将成为一部分,用户将获得一个菜单,他们可以选择添加记录,删除记录或将书籍打印到屏幕上。所以我打算使用合适的方法。

3 个答案:

答案 0 :(得分:4)

嗯,首先,数组是wrong data structure在这里使用。

数组总是固定大小 - 而您希望能够添加元素并稍后删除它们。假设您使用的是C#2或更高版本,则应该使用List<T>

现在,接下来要弄清楚T应该是什么。听起来你想要存储人员的详细信息 - 所以你应该创建一个Person类(或者Contact)来封装名称和地址......这样你就可以拥有{{1} }。

下一个任务可能是找出如何询问用户输入并将该输入转换为List<Person>的实例。

基本上,将任务分解成小部分 - 然后随时提出有关您认为难以找到的任何特定位的问题。

答案 1 :(得分:0)

我似乎记得我的CS课程中完全相同的作业。

教授希望我们使用链表。正如John Skeet在上面指出的那样,.NET有List<T>,它基本上是一个链表(附加功能是能够通过索引像数组一样引用每个项目)

答案 2 :(得分:0)

您可以将序列化程序用于保存部分。

查看BinaryFormatter类和XmlSerializer。 XmlSerializer是首选,因为该文件是人类可读的,考虑到您的应用程序的类型和用途,效率通常不那么重要。

使用XmlSerializer非常简单:

var filename = "c:\....\addressbook.xml";
if (File.Exists(filename))
   File.Delete(filename);
using (var sw = new StreamWriter(filename))
{
   var xs = new XmlSerializer(typeof(List<Person>));
   xs.Serialize(sw, myAddressBook);
}