電子書籍の厳選無料作品が豊富!

C#の勉強したて(Cの知識もへっぽこ)なので、以下のことをしたいのに、
さっぱりやり方が分かりません。
教えて君みたいな質問ですが、心の大きい方、どうぞ教えてくださいませ。

★やりたいこと
他クラスのメンバー全部に値を入力し、かつそれを出力したい。
なお、他クラスのメンバーは数十個あるので、一つづつ代入&出力ではなく、
ループ文を使ったようなもので行えないかと模索中。


★例

//住所録ファイルの内容をコンソール出力するプログラム。
using System;

class Data_Format {
  public string name;
  public string address;
  public string age;
}

class App{

  public static void Read_Data(ref Data_Format obj){
    obj.name = 略) テキストファイルの1行目から読込め
    obj.address = 略) テキストファイルの2行目から読込め
    obj.age = 略) テキストファイルの3行目から読込め
  }

  public static void Main() {
    Data_Format ob = new Data_Format();

    App.Read_Data(ref ob);

    Console.WriteLine(ob.name);
    Console.WriteLine(ob.adress); 
    Console.WriteLine(ob.age);
  }
}


この例では

Mainメソッドで、
3個のオブジェクト(ob.name, ob.address, ob.age)の内容を出力させるのに、
Conosole.WriteLineの文を3個書いています。

さらに、Read_Dataメソッドで
3個のオブジェクト(ob.name, ob.address, ob.age)の値を入力するのに、
3行費やしています。
(↑ファイルの1行目から順番に読ませるので、効率化できる??)

しかし、実際に作りたいプログラムはメンバーが数十個あるので、
ループ文等を使えれば、効率よくなるのかな悪それでもいいのですが、
もっといい方があればご教授下さい。

A 回答 (2件)

リフレクションを使えば動的に取得できます。



public class Data_Format
{
public string s1 = "1";
public string s2 = "2";
public string s3 = "3";

public string members()
{
string ret = "";
try
{
System.Reflection.FieldInfo[] fields = this.GetType().GetFields();
foreach(System.Reflection.FieldInfo f in fields)
{
ret += (string)f.GetValue(this) + "\n";
}
}
catch(Exception)
{
}
return ret;
}
}
    • good
    • 0
この回答へのお礼

大変参考になりました。
どうもありがとうございました。

お礼日時:2004/10/13 09:36

Data_Formatクラスに、


メンバをコンソールプリントするようなメソッドを
作ればいいと思いますが。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報