2012-11-21 28 views
2

我有麻煩做家庭作業,我們是否應該製作電話簿。條件是,它應該是這個樣子:電話簿 - 進入班級列表

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

的功課標籤已經過時了。請刪除 –

回答

2

由於_phoneListEntry的集合,你需要創建一個新的實例,並將其添加到列表中。

Entry entry = new Entry(); 
entry.Name = name; 
entry.Number = number; 
_phoneList.Add(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>(); 
+0

感謝您的回答。我試圖運行代碼,並得到這個:「NullReferenceException是unhandeld:對象引用未設置爲對象的實例。」它chrashed =/ – Reyne

+0

@ user1842948,請參閱編輯。 – Brandon

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