C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 101 を表示中)
■59981 / )  Re[1]: 構造体へのデータの渡し方
□投稿者/ 魔界の仮面弁士 (2219回)-(2011/06/14(Tue) 19:32:11)
No59980 (裕猫 さん) に返信
>  構造体を使うことになりました。
構造体で管理しなければダメですか?

たとえば、System.Collections.Specialized.NameValueCollection クラスで管理すれば、
  // 初期定義
  foo = new NameValueCollection();
  foo.Add("ID", null);
  foo.Add("Mei", null);

  // 名前指定で読み書き
  foo["ID"]  = EM20OLD[0].Tostring();
  foo["Mei"] = EM20OLD[1].Tostring();
  string id = foo["ID"];

  // インデックス指定で読み書き
  foo[foo.Keys[1]] = EM20OLD[1].Tostring();
  string mei = foo[1];
のような記述が可能です。


また、複数のレコードとして管理したいような場合は
System.Data.DataTable を使うのも手です。


たとえば、型付 DataSet な DataTable 等で管理するようにすれば、
 row.ID   = EM20OLD[0].Tostring();
 row.Name = EM20OLD[1].Tostring();
のような書き方や、
 row["ID"]   = EM20OLD[0].Tostring();
 row["Name"] = EM20OLD[1].Tostring();
な書き方や
 row[0] = EM20OLD[0].Tostring();
 row[1] = EM20OLD[1].Tostring();
な書き方が行えるため、ループ処理もやりやすいかと思います。



> たぶん構造体にもあるだろうと、いろいろ調べているのですが
最終手段としては、リフレクションという手もありますけれどね。

// using System.Reflection;

Type t = typeof(Kozo.Busho);
FieldInfo[] f = t.GetFields();

object o = ss;
f[0].SetValue(o, EM20OLD[0].ToString());
f[1].SetValue(o, EM20OLD[1].ToString());
ss = (Kozo.Busho)o;

返信 編集キー/


管理者用

- Child Tree -