■79950 / ) |
Re[1]: クラスのList |
□投稿者/ とっちゃん (365回)-(2016/05/30(Mon) 19:15:26)
|
■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);//② > > for (int i = 0; i < temp.Count;i++ ) { > MessageBox.Show(temp[i].name);//③ > } > } > > //--------------------------------------------------------------- > その結果がこうなりました。 > ①の出力は「あ」 > ②の出力は「い」 > ③の出力は「い」「い」 > > ③の出力が「あ」「い」となるものと考えていたのですが、 > うまくいきませんでした。 > 勘違いしているでおろう部分をご指摘いただければ幸いです。
List<test> に入るオブジェクトは、参照オブジェクトです。 tが同じまま(中身は変わっていますが)2回セットするので、最後に変更した内容が 全部に反映されています。
1,2で違うものにしたいときは、 1回目の temp.Add(t); の後に t = new test(); ともう一度行うことで、2回目に追加する t が別のものになります。
より詳しくは、入門書の類を読んでみてください。
|
|