2010-12-16 32 views
1

我有一個小的任務的一部分,我被要求創建一個數組來存儲從用戶給出的輸入中獲取的名稱和地址,並且能夠稍後刪除數組中的名稱和地址。C#控制檯 - 輸入和從數組中刪除

任何幫助或幫助我理解如何實現這一目標的鏈接將非常appreaciated,謝謝。

編輯 - 該數組將被設置爲一個地址簿,並在打印到屏幕上時顯示如下:「Bloggs,Joe」 它必須是surname,然後是forename。我知道如何獲取和存儲用戶將要提供的信息,即他們的姓名和地址,但我堅持如何將其添加到數組中。該數組不一定是無限的,因爲我應該分配數組,無論我希望的大小。

在程序開始的時候它會成爲一部分,用戶會得到一個菜單,並且他們可以選擇添加一條記錄,刪除一條記錄或將書籍打印到屏幕上。所以我打算在適當的地方使用方法。

+0

你會從一個控制檯應用程序或WinForms應用程序或網頁(的.aspx),或在做什麼呢?在應用程序退出後(想想保存遊戲)它需要堅持還是在程序生命週期內檢索和存儲數據就足夠了? (如果這是一個學校項目,而且是學期的末尾,應該期待堅持) – jcolebrand 2010-12-16 20:02:44

+0

使用microsoft visual c#2008。是的,需要一個「保存遊戲」,以便當應用程序再次打開時,用戶可以繼續從數組中添加/刪除(它將被視爲地址簿) – 2010-12-16 20:19:32

回答

4

那麼,首先,一個數組是wrong data structure在這裏使用。

數組總是固定大小,而您希望能夠添加元素並稍後刪除它們。假設您使用的是C#2或更高版本,則應該使用List<T>

現在,接下來要弄清楚T應該是什麼。這聽起來像你想存儲人的細節 - 所以你應該創建一個Person類(或者可能Contact)來封裝名稱和地址......這樣你可以有一個List<Person>

接下來的任務可能是找出如何詢問用戶輸入並將該輸入轉換爲Person的實例。

基本上,將任務分解成小塊 - 然後隨意提出有關您發現困難的任何特定位的問題。

+0

我相信要問的人是學生所以他們唯一知道的單詞是數組(真的,什麼是列表但是T的「數組」[好吧,我意識到我在更一般的僞代碼情況下的語義差異]) – jcolebrand 2010-12-16 20:29:22

+0

@BenSmith〜你應該標記這個答案一旦你理解了Jon的建議(在答案的左側和在upvotes下面使用灰色 - >綠色複選標記),然後針對將要給予你的特定部分提出新問題。我們並不介意幫助你解決問題,正如你所看到的,你在5分鐘內得到了評論和答案,所以我們至少和TA一樣快;)...如果你需要添加更多的細節,編輯您的原始問題。 – jcolebrand 2010-12-16 20:31:06

+0

好的,謝謝,我現在將更新一些細節 – 2010-12-16 20:36:13

0

我似乎記得我的CS類完全相同的任務。

教授希望我們使用鏈接列表。正如John Skeet在上面指出的那樣,.NET有List<T>,它基本上是一個鏈接列表(具有可以像索引一樣通過索引引用每個項目的附加功能)

0

您可以使用Serializer作爲保存部分。

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