【问题标题】:C# Console - Inputting and removing from an arrayC# 控制台 - 从数组中输入和删除
【发布时间】:2010-12-17 05:16:44
【问题描述】:

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

任何帮助我了解如何实现这一目标的帮助或链接将不胜感激,谢谢。

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

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

【问题讨论】:

  • 您会从控制台应用程序、winforms 应用程序或网络 (.aspx) 还是什么?它是否需要在应用程序退出后持续存在(想想保存游戏)还是在程序生命周期内检索和存储数据就足够了? (如果这是一个学校项目,并且是学期的结束,则应该坚持下去)
  • 使用 microsoft visual c# 2008。是的,需要一个“保存游戏”,这样当再次打开应用程序时,用户可以继续从数组中添加/删除(它将被处理像地址簿)

标签: c# arrays


【解决方案1】:

好吧,首先,数组是这里使用的wrong data structure

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

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

下一个任务可能是弄清楚如何要求用户输入并将该输入转换为Person 的实例。

基本上,将任务分解成小块 - 然后随时就您觉得困难的任何特定部分提出问题。

【讨论】:

  • 我相信问的人是学生,所以他们知道的唯一词是 Array(真的,什么是 List 而是 T 的“数组”[好吧,我意识到语义上的差异我的意思是在更一般的伪代码案例中])
  • @BenSmith ~ 理解 Jon 的建议后,您应该将此答案标记为已接受(使用答案左侧和赞成票下方的灰色 -> 绿色复选标记),然后针对适合您的特定零件。我们不介意帮助您完成它,如您所见,您在 5 分钟内获得了 cmets 和答案,因此我们至少与 TA 一样快 ;) ... 如果您需要添加更多细节,编辑您的原始问题。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    您可以使用序列化程序进行保存。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2014-08-11
      相关资源
      最近更新 更多