2010-12-16 9 views
1

私は小さな割り当ての一部として、ユーザーから与えられた名前とアドレスを格納する配列を作成し、後でアレイの名前とアドレス。C#コンソール - アレイからの入力と削除

これを達成する方法を理解するのを助けるためのヘルプやリンクは非常におかげされます。ありがとうございます。

EDIT - 配列はアドレス帳のように設定され、画面に印刷されると、次のように表示されます。 "Bloggs、Joe" 姓は姓でなければなりません。私は、ユーザが名前と住所である情報を取得して保存する方法を知っていますが、これを配列に追加する方法には固執しています。配列は無限にする必要はありません。なぜなら、私が望むどんなサイズでも配列を割り当てるはずだからです。

プログラムの開始時に、ユーザーにメニューが表示され、レコードの追加、レコードの削除、画面への印刷を選択できます。だから、私は適切なところでメソッドを使うつもりです。

+0

コンソールアプリやリサイズアプリやウェブ(.aspxの)または何からこれをやっているのでしょうか?アプリケーションが終了した後も持続する必要がありますか(ゲームの保存を考えてください)、またはプログラムの存続期間中にデータを取得して保存するのに十分でしょうか? (これが学校プロジェクトのためのもので、それが学期の_end_である場合は、持続性が必要です) – jcolebrand

+0

Microsoft Visual C#2008を使用してください。はい、アプリケーションを再度開いたときに、ユーザーは配列から追加/削除を続けることができるように、「save-game」が必要になります(アドレス帳のように扱われます) –

答えて

4

まず、配列はここではwrong data structureです。

配列は常に固定サイズですが、要素を追加して後で削除できるようにする必要があります。 C#2以上を使用していると仮定すると、おそらくList<T>を使用するべきです。

今、次は、Tになるはずです。人々の詳細を保存したいと思うように聞こえるので、名前と住所をカプセル化するためにクラス(またはおそらくContact)を作成して、List<Person>を持つことができます。

次の作業では、ユーザーに入力を求めて、その入力をPersonのインスタンスに変換する方法が考えられます。

基本的に、タスクを小さなビットに分割してください。そして、あなたが見つけた特定のビットについて質問をしてください。

+0

私は、彼らが知っている唯一の言葉はArrayです(実際にはリストですが、Tの「配列」[ok、私はより一般的な擬似コードの場合の意味の違いを理解しています]) – jcolebrand

+0

@BenSmith〜あなたがジョンのアドバイスを理解したら(答えの左側とアップフォートの下のグレー - >緑色のチェックマークを使用して)、あなたに合った特定の部分について新しい質問をしてください。私たちはあなたがそれを歩いていくのを助けてくれています。あなたが見ることができるように、5分以内にコメントと回答があったので、TA以上の速さでいます;)...詳細を追加する必要がある場合は、元の質問を編集します。 – jcolebrand

+0

よろしくお願いいたします。もう少し詳しく説明します –

0

私はCSクラスからこの全く同じ割り当てを覚えているようです。

私たちはリンクリストを使用したいと考えていました。 John Skeetが指摘しているように、.NETはList<T>という基本的なリンクリストです(配列のようなインデックスで各項目を参照できるという追加機能付き)

0

保存部分にシリアライザを使用できます。

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); 
} 
関連する問題