首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phonebook -将条目添加到类列表中

Phonebook -将条目添加到类列表中
EN

Stack Overflow用户
提问于 2012-11-22 02:47:56
回答 2查看 1.5K关注 0票数 2

我有一个家庭作业的问题,因为我们应该做一个电话簿。条件是它应该看起来像这样:

代码语言:javascript
复制
Class Phonebook   
{
    private List<Entry> _phoneList;
    public Phonebook()
    {
       //instance of _phoneList
    }
    public void AddEntry (string name, string number)
    {
       //logic
    }
    public string FindEntry (string namne)
    {
       //logic
    }
}

class Entry
{
  public string Name{ get; private set; }
  public string Number{ get; private set; }
}

但是,我不确定如何让AddEntry方法为条目列表_phoneList分配新的名称/编号。我试了很多,但都没有用。有什么建议可以让它工作吗?任何帮助都将不胜感激!

到目前为止,我的代码如下所示

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace app3
{
    public partial class Form1 : Form
    {
        private Phonebook phonebook;
        public Form1()
        {
            InitializeComponent();
            phonebook = new Phonebook();
        }
            private void addEntryButton_Click(object sender, EventArgs e)
        {
            phonebook.AddEntry((addNameTextBox.Text), (addNumberTextBox.Text));
        } 
    } 
    class Phonebook
    {
        private List<Entry> _phoneList;
        public Phonebook()
        {  
            List<Entry> _phoneList = new List<Entry>(); 
        }
        public void AddEntry(string name, string number)
        {
        }
    }
    class Entry
    {
        public string Name { get; private set; }
        public string Number { get; private set; }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-22 02:50:26

由于_phoneListEntry的集合,因此您需要创建一个新实例并将其添加到列表中。

代码语言:javascript
复制
Entry entry = new Entry();
entry.Name = name;
entry.Number = number;
_phoneList.Add(entry);

但是,由于Entry具有私有的属性setter,因此您应该添加一个接受名称和编号的新构造函数,并将其设置在其中。

代码语言:javascript
复制
class Entry
{
    public Entry(string name, string number)
    {
       Name = name;
       Number = number;
    }

    public string Name { get; private set; }
    public string Number { get; private set; }
}

然后它就会变成

代码语言:javascript
复制
_phoneList.Add(new Entry(name, number));

编辑:

代码语言:javascript
复制
private List<Entry> _phoneList;
public Phonebook()
{  
  List<Entry> _phoneList = new List<Entry>(); 
}

将_phoneList声明为私有字段,然后在隐藏原始字段的构造函数中重新声明它。

当您稍后在AddEntry方法中使用_phoneList时,将获得未初始化的字段。将构造函数更改为

代码语言:javascript
复制
_phoneList = new List<Entry>();
票数 2
EN

Stack Overflow用户

发布于 2012-11-22 02:52:44

您需要为Entry创建一个构造函数

代码语言:javascript
复制
public Entry(string name, string number)
{
    Name = name;
    Number = number;
}

然后,您可以在AddEntry方法中使用此构造函数:

代码语言:javascript
复制
public void AddEntry (string name, string number)
{
    _phoneList.Add(new Entry(name, number));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13500039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档