我有一个家庭作业的问题,因为我们应该做一个电话簿。条件是它应该看起来像这样:
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; }
}
}发布于 2012-11-22 02:50:26
由于_phoneList是Entry的集合,因此您需要创建一个新实例并将其添加到列表中。
Entry entry = new Entry();
entry.Name = name;
entry.Number = number;
_phoneList.Add(entry);但是,由于Entry具有私有的属性setter,因此您应该添加一个接受名称和编号的新构造函数,并将其设置在其中。
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>();发布于 2012-11-22 02:52:44
您需要为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));
}https://stackoverflow.com/questions/13500039
复制相似问题