- 締切済み
[C#]Arraylistに追加した構造体の内容の変更
struct Hoge { public string name; public string address; } ArrayList list = new ArrayList(); Hoge test = new Hoge(); test.name = "あいうえお"; test.address = "123"; list.Add(test); test.name = "かきくけこ"; test.address = "456"; list.Add(test); //ここから //list[0].name = "さしすせそ"; のように追加するコードを書きたいです //ここに for (int i = 0; i < List.Count; i++) { MessageBox.Show((Hoge)List[i]).name.ToString()); } これで、 list[0]のnameには"あいうえお" list[1]のnameには"かきくけこ" が、代入されていますが list[0]のnameをArrayListに追加したあとに変更したいのです。 このままだと、「あいうえお」「かきくけこ」と表示されますが、 「さしすせそ」を途中でlist[0]の代入して、 「さしすせそ」「かきくけこ」と表示したいのです。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- ukarri
- ベストアンサー率0% (0/0)
直接書き換えてしまったらどうでしょう? Hoge sa; sa = (Hoge)list[0]; // list[0]の内容をコピー sa.name = "さしすせそ"; // 必要な部分を書き換える list[0] = sa; // list[0]に代入 こんな書き方だめだったらごめんなさい。
- todo36
- ベストアンサー率58% (728/1234)
class Hoge { public string name = null; public string address = null; } C/C++で言うところの構造体とC#のstructは全くの別物。 structではなくclassを使いましょ。 http://www12.plala.or.jp/dokugaku/lecture/6/4.html http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_005/cs2_005_03.html
- redfox63
- ベストアンサー率71% (1325/1856)
ArrayListに Replaceが無いので InsertとRemoveまたはRemoveAtを使って更新する方法かと思います Hoge obj; obj = (Hoge)List[0]; obj.Name = "さしすせそ"; list.RemoveAt(0); list.Insert(0, obj); # 的外れならご容赦ください
- Pebble
- ベストアンサー率0% (0/1)
ArrayListではなくListジェネリックでもいいのなら できると思いますが参考までに。 struct Hoge { public string name; public string address; } class Class2 { public void main(){ List<Hoge> hoge = new List<Hoge>(); Hoge _hoge; _hoge.name = "あいうえお"; _hoge.address = "123"; hoge.Add( _hoge ); _hoge.name = "かきくけこ"; _hoge.address = "456"; hoge.Add( _hoge ); _hoge.name = "さしすせそ"; _hoge.address = "789"; hoge.Insert( 0, _hoge ); for( int i=0; i< hoge.Count; i++ ){ MessageBox.Show( hoge[i].name.ToString() ); } } }
- himajin100000
- ベストアンサー率54% (1660/3060)
結論から言うと出来ないと思う。 あまり理解できているわけじゃないけど,俺も同じトラブルに遭ったことがあった。 http://oshiete1.goo.ne.jp/qa3320160.html
補足
本当ですか・・・ 先に数十個 .name だけで list に追加して for (int i = 0; i < List.Count; i++) { //.name から .address を取得する処理 } と、このようにArrayListの.nameを読み込み、それに基づいて .addressを後から追加したいのですが 他の方法でできるのであれば、どなたかご教授願います。