作者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
1F:→ pico2k:object[] obj2 = (object[])obj1.clone(); 05/30 17:09
2F:→ goie:这方法我也试过,但也会发生同样情况。还是感谢您。 05/30 20:13
3F:→ goie:目前只能用回圈一个一个复制过去才行,想了解有无更简单方法? 05/30 20:14
4F:→ flamo:class改struct最简单, 如果你了解2者差别的话 05/30 22:37
5F:→ goie:感谢楼上大大,刚去查了,大概是传值和传址的差异。 05/30 23:13
6F:→ goie:struct适合我的case 感谢! 05/30 23:14
7F:推 horngsh:关键字value type and reference type variable 05/31 08:56