- 締切済み
C#について質問です。
C#でCSVファイルからAとBとCというデータを読み取りそれぞれの画面で表示して変更があった場合は保存するというプログラムを作っています。 それでAとBとCのそれぞれの画面でデータを保持するよりもstaticなクラスを作って読み込みも保存もそこを通してやるのがいいと聞いたのですが実際にどうやればいいかわかりません。 つたない質問ですがわかる方がいましたら教えてください。 できればサンプルコードもあるとありがたいです。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- oboroxx
- ベストアンサー率40% (317/792)
- tatsu99
- ベストアンサー率52% (391/751)
1つの例です。 CsvFileControlというクラスを作ります。 データA,B,Cをそのクラスのメンバの変数にします。 メソッドread(ファイルからの読み込み) メソッドsave(ファイルへの書き込み) を定義します。(メソッドの名前はあなたの好みで好きなように読み替えてください) データA,B,Cは、クラスの外部から参照/更新できるようにします。 (データA,B,Cを操作するメソッドは、今回は作らない) 以下がその実装例です。 ------------------- using System; using System.Text; namespace ConsoleTest1 { static class CsvFileControl { //実際は変数の集まりであるA,B,Cだがここではint型のa、b、cとする static public int a; static public int b; static public int c; //読み込み //エラーケースは考慮していない為、void型(成功か失敗を返すならbool型にする) static public void read() { //実際はCSVファイルから読み込んで以下の変数にセットする a = 10; b = 20; c = 30; } //書き込み //エラーケースは考慮していない為、void型(成功か失敗を返すならbool型にする) static public void save() { //変数、a,b,cの内容をCSVファイルに書き込む } } class Program { static void Main(string[] args) { //CSVファイルから読み込む CsvFileControl.read(); //読み込んだ内容を表示(実際はもっときれいに画面に表示) Console.WriteLine("{0}{1}{2}", CsvFileControl.a, CsvFileControl.b, CsvFileControl.c); //画面上でデータを更新したつもり CsvFileControl.a = 100; CsvFileControl.b = 200; CsvFileControl.c = 300; //そのデータを保存(したつもり) CsvFileControl.save(); } } } --------------------- 確認の為、コンソールアプリケーションで作りました。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> データ管理のクラスを作ってそこでデータを保持したいのですがそのクラスでどこまでどのように処理をすればいいのかわからず悩んでいます。 イッパツで決めようと思わず、いくつかこしらえて落としどころを探ればいいんじゃありません? 「作りながら学ぶ」のも大事ですよ。
お礼
いろいろやってみます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
現時点では正直イメージ浮かびませんね。 あなたの思うとおりに作って呈示してもらえば、 改良点モロモロのアドバイスもできるでしょうが。
補足
今はStreamReaderでCSVファイルを読んでカンマ区切りで配列にして表示する、という一連の動作をすべてA,B,Cそれぞれのフォームで処理しています。 これをデータ管理のクラスを作ってそこでデータを保持したいのですがそのクラスでどこまでどのように処理をすればいいのかわからず悩んでいます。
お礼
ありがとうございます。 大変参考になりました。