作者goie (等待)
看板C_Sharp
標題[問題] 物件陣列的複製
時間Sun May 30 16:25:20 2010
小弟想請教一個關於物件陣列複製的問題
class obj
{
int a;
int b;
}
假設有obj1,obj2兩個物件陣列
object obj1 = new object[2]; (後續再設物件的值)
接著 new一個同樣大小的物件陣列
object obj2 = new object[2];
然後複製
Array.Copy(obj1, obj2, 2);
把obj1複製給obj2後,此時若更改了obj2的值
ex. obj2[0].a = 2;
這時候obj1[0].a 也會被更改(= 2)
我的期望是obj[0].a應該不要被更改
所以想請問有沒有甚麼方法可以達到我的複製效果
又為什麼會有上述的情形發生呢?
先感謝各位了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.47.40
→ pico2k:object[] obj2 = (object[])obj1.clone(); 05/30 17:09
→ goie:這方法我也試過,但也會發生同樣情況。還是感謝您。 05/30 20:13
→ goie:目前只能用迴圈一個一個複製過去才行,想了解有無更簡單方法? 05/30 20:14
→ flamo:class改struct最簡單, 如果你了解2者差別的話 05/30 22:37
→ goie:感謝樓上大大,剛去查了,大概是傳值和傳址的差異。 05/30 23:13
→ goie:struct適合我的case 感謝! 05/30 23:14
推 horngsh:關鍵字value type and reference type variable 05/31 08:56