■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;
|
|