[問題] 物件陣列的複製

看板C_Sharp作者 (等待)時間15年前 (2010/05/30 16:25), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/2 (看更多)
小弟想請教一個關於物件陣列複製的問題 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

05/30 17:09, , 1F
object[] obj2 = (object[])obj1.clone();
05/30 17:09, 1F

05/30 20:13, , 2F
這方法我也試過,但也會發生同樣情況。還是感謝您。
05/30 20:13, 2F

05/30 20:14, , 3F
目前只能用迴圈一個一個複製過去才行,想了解有無更簡單方法?
05/30 20:14, 3F

05/30 22:37, , 4F
class改struct最簡單, 如果你了解2者差別的話
05/30 22:37, 4F

05/30 23:13, , 5F
感謝樓上大大,剛去查了,大概是傳值和傳址的差異。
05/30 23:13, 5F

05/30 23:14, , 6F
struct適合我的case 感謝!
05/30 23:14, 6F

05/31 08:56, , 7F
關鍵字value type and reference type variable
05/31 08:56, 7F
文章代碼(AID): #1C0Y3o2E (C_Sharp)
文章代碼(AID): #1C0Y3o2E (C_Sharp)