2008年6月16日 星期一

非值型別要加入ARRAY類時 要另外NEW實體

自訂型態class或陣列型別 只要不是值型別
加入array類的時候 例如hashtabla.add() arrarlist.add() listbox.add()
如果直接加入變數名 那會加的都是同一個東西
ex:
mtype oo=new mytype();
arraylist list=new arraylist();
oo.X="a"
list.add(oo);
oo.X="b";
list.add(oo);
oo.X="c";
list.add(oo);

這樣list裡會有三個元素 但是其實都指向同一個記憶體位置 所以三個oo.X都是c (最後變更的那個)
要避免這樣的情形要在加入的時候新增一個實體
list.add(new mytype(oo));
這樣各別實體加入後就不會互相影響了

當然mytype類別的建構子要自己新增一個會回傳輸入類別的copy