看板 C_Sharp 關於我們 聯絡資訊
小弟想請教一個關於物件陣列複製的問題 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