• 締切済み

[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]の代入して、 「さしすせそ」「かきくけこ」と表示したいのです。

みんなの回答

  • ukarri
  • ベストアンサー率0% (0/0)
回答No.5

直接書き換えてしまったらどうでしょう? Hoge sa; sa = (Hoge)list[0];   // list[0]の内容をコピー sa.name = "さしすせそ";  // 必要な部分を書き換える list[0] = sa;       // list[0]に代入 こんな書き方だめだったらごめんなさい。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

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)
回答No.3

ArrayListに Replaceが無いので InsertとRemoveまたはRemoveAtを使って更新する方法かと思います Hoge obj; obj = (Hoge)List[0]; obj.Name = "さしすせそ"; list.RemoveAt(0); list.Insert(0, obj); # 的外れならご容赦ください

  • Pebble
  • ベストアンサー率0% (0/1)
回答No.2

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() ); } } }

回答No.1

結論から言うと出来ないと思う。 あまり理解できているわけじゃないけど,俺も同じトラブルに遭ったことがあった。 http://oshiete1.goo.ne.jp/qa3320160.html

knoppixer
質問者

補足

本当ですか・・・ 先に数十個 .name だけで list に追加して for (int i = 0; i < List.Count; i++) {     //.name から .address を取得する処理 } と、このようにArrayListの.nameを読み込み、それに基づいて .addressを後から追加したいのですが 他の方法でできるのであれば、どなたかご教授願います。