dポイントプレゼントキャンペーン実施中!

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

A 回答 (5件)

直接書き換えてしまったらどうでしょう?



Hoge sa;
sa = (Hoge)list[0];   // list[0]の内容をコピー
sa.name = "さしすせそ";  // 必要な部分を書き換える
list[0] = sa;       // list[0]に代入

こんな書き方だめだったらごめんなさい。
    • good
    • 0

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/cs …
    • good
    • 0

ArrayListに Replaceが無いので InsertとRemoveまたはRemoveAtを使って更新する方法かと思います



Hoge obj;
obj = (Hoge)List[0];
obj.Name = "さしすせそ";
list.RemoveAt(0);
list.Insert(0, obj);

# 的外れならご容赦ください
    • good
    • 0

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

}
}
    • good
    • 1

結論から言うと出来ないと思う。



あまり理解できているわけじゃないけど,俺も同じトラブルに遭ったことがあった。

http://oshiete1.goo.ne.jp/qa3320160.html

この回答への補足

本当ですか・・・
先に数十個 .name だけで list に追加して
for (int i = 0; i < List.Count; i++)
{
    //.name から .address を取得する処理
}

と、このようにArrayListの.nameを読み込み、それに基づいて
.addressを後から追加したいのですが
他の方法でできるのであれば、どなたかご教授願います。

補足日時:2007/11/05 21:07
    • good
    • 0

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