2010-12-16 82 views
1

我有一个小的任务的一部分,我被要求创建一个数组来存储从用户给出的输入中获取的名称和地址,并且能够稍后删除数组中的名称和地址。C#控制台 - 输入和从数组中删除

任何帮助或帮助我理解如何实现这一目标的链接将非常appreaciated,谢谢。

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

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

+0

你会从一个控制台应用程序或WinForms应用程序或网页(的.aspx),或在做什么呢?在应用程序退出后(想想保存游戏)它需要坚持还是在程序生命周期内检索和存储数据就足够了? (如果这是一个学校项目,而且是学期的末尾,应该期待坚持) – jcolebrand 2010-12-16 20:02:44

+0

使用microsoft visual c#2008。是的,需要一个“保存游戏”,以便当应用程序再次打开时,用户可以继续从数组中添加/删除(它将被视为地址簿) – 2010-12-16 20:19:32

回答

4

那么,首先,一个数组是wrong data structure在这里使用。

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

现在,接下来要弄清楚T应该是什么。这听起来像你想存储人的细节 - 所以你应该创建一个Person类(或者可能Contact)来封装名称和地址......这样你可以有一个List<Person>

接下来的任务可能是找出如何询问用户输入并将该输入转换为Person的实例。

基本上,将任务分解成小块 - 然后随意提出有关您发现困难的任何特定位的问题。

+0

我相信要问的人是学生所以他们唯一知道的单词是数组(真的,什么是列表但是T的“数组”[好吧,我意识到我在更一般的伪代码情况下的语义差异]) – jcolebrand 2010-12-16 20:29:22

+0

@BenSmith〜你应该标记这个答案一旦你理解了Jon的建议(在答案的左侧和在upvotes下面使用灰色 - >绿色复选标记),然后针对将要给予你的特定部分提出新问题。我们并不介意帮助你解决问题,正如你所看到的,你在5分钟内得到了评论和答案,所以我们至少和TA一样快;)...如果你需要添加更多的细节,编辑您的原始问题。 – jcolebrand 2010-12-16 20:31:06

+0

好的,谢谢,我现在将更新一些细节 – 2010-12-16 20:36:13

0

我似乎记得我的CS类完全相同的任务。

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

0

您可以使用Serializer作为保存部分。

查看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); 
}