电话簿 - 进入班级列表

时间:2012-11-21 18:47:56

标签: c# list

我在完成家庭作业时遇到了麻烦,我们是不是应该制作电话簿。条件是它应该是这样的:

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分配新的名称/号码。我已经尝试了很多,但无济于事。任何提示如何使其工作?任何帮助将不胜感激!

到目前为止我的代码看起来像这样

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; }
    }
}

2 个答案:

答案 0 :(得分:2)

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

Entry entry = new Entry();
entry.Name = name;
entry.Number = number;
_phoneList.Add(entry);

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

class Entry
{
    public Entry(string name, string number)
    {
       Name = name;
       Number = number;
    }

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

然后就会变成

_phoneList.Add(new Entry(name, number));

编辑:

private List<Entry> _phoneList;
public Phonebook()
{  
  List<Entry> _phoneList = new List<Entry>(); 
}

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

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

_phoneList = new List<Entry>();

答案 1 :(得分:1)

您需要为Entry

创建构造函数
public Entry(string name, string number)
{
    Name = name;
    Number = number;
}

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

public void AddEntry (string name, string number)
{
    _phoneList.Add(new Entry(name, number));
}