| ■79952 / ) |
Re[2]: クラスのList |
□投稿者/ mh001 (2回)-(2016/05/30(Mon) 19:38:50)
|
2016/05/30(Mon) 19:40:17 編集(投稿者)
■No79950 (とっちゃん さん) に返信 > ■No79948 (mh001 さん) に返信 >>初めて質問させていただきます。 >> >>さて、このようなクラスがあるとき、 >> >>public class test >>{ >> public string name; >>} >> >>以下のイベントを発生させます。 >> >>//--------------------------------------------------------------- >> private void button1_Click(object sender, EventArgs e) >> { >> test t = new test(); >> List<test> temp = new List<test>(); >> >> //------------------- >> t.name = "あ"; >> >> temp.Add(t);// >> MessageBox.Show(temp[0].name);//@ >> >> //------------------- >> t.name = "い"; >> >> temp.Add(t); >> MessageBox.Show(temp[1].name);//A >> >> for (int i = 0; i < temp.Count;i++ ) { >> MessageBox.Show(temp[i].name);//B >> } >> } >> >>//--------------------------------------------------------------- >>その結果がこうなりました。 >>@の出力は「あ」 >>Aの出力は「い」 >>Bの出力は「い」「い」 >> >>Bの出力が「あ」「い」となるものと考えていたのですが、 >>うまくいきませんでした。 >>勘違いしているでおろう部分をご指摘いただければ幸いです。 > > List<test> に入るオブジェクトは、参照オブジェクトです。 > tが同じまま(中身は変わっていますが)2回セットするので、最後に変更した内容が > 全部に反映されています。 > > 1,2で違うものにしたいときは、 > 1回目の temp.Add(t); の後に > t = new test(); > ともう一度行うことで、2回目に追加する t が別のものになります。 > > より詳しくは、入門書の類を読んでみてください。 >
早速ご回答頂きありがとうございます。
t = new test(); を挿入することにより、希望どおりの結果を得ることができました。
参照オブジェクトをキーワードに、今一度勉強しようと思います。
ご指摘ありがとうございました。
|
|