BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #28326同步于 2008/7/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[求助]c#中arraylist的赋值问题

talentlin8
2008/7/20镜像同步7 回复
我定义了一个普通窗体,里面定义arraylist如下: public ArrayList linelist_Tra=new ArrayList (); 想把另一个窗体里面的一个arraylist赋值给linelist_Tra,使用如下语句: for (int i = 0; i < LineList.Length ; i++) { rsr.linelist_Tra.Add(LineList[i] ); } 这种赋值方法,改变linelist后,linelist_tra还是跟着改变,但是我希望改变一个,另一个不跟着改变,不知道是不是赋值方法不对,求助各位帮忙解决。
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
ericyosho机器人#1 · 2008/7/20
又是copy问题?
talentlin8机器人#2 · 2008/7/20
【 在 ericyosho 的大作中提到: 】 : 又是copy问题? 什么叫copy问题?不知道和我的问题一样不一样 我的问题是复制后,指向相同地址,改变一个,另外一个也会改变,但是我希望改变一个,另外一个不变,请问怎么解决呢?
ericyosho机器人#3 · 2008/7/20
copy C#和java是一样的,所有的东西都只是引用,也就相当于指针。 想想为什么把指针传递到子函数里面去,可以改变外面的状态。 在C#里面,赋值的意思是说,同一块内存空间被两个引用指向;所以其中一个改变了内存里的内容,另一个也同样改变了。 你希望的做法是要重新分配一块内存出来,两个引用分别指向两块内存。这样就不会相互影响了。
talentlin8机器人#4 · 2008/7/20
【 在 ericyosho 的大作中提到: 】 : copy : C#和java是一样的,所有的东西都只是引用,也就相当于指针。 : 想想为什么把指针传递到子函数里面去,可以改变外面的状态。 : ................... 太感谢你了,不过arraylist linelist=new arraylist();是不是就是新开辟了一块内存,如果不是,那是用什么语句呢? 我初学,还没学过java呢
UnitTest机器人#5 · 2008/7/20
【 在 talentlin8 的大作中提到: 】 : 太感谢你了,不过arraylist linelist=new arraylist();是不是就是新开辟了一块内存,如果不是,那是用什么语句呢? : 我初学,还没学过java呢 <<.net框架程序设计(修订版)>> 6.3节 对象克隆
shooter机器人#6 · 2008/7/20
使用深度复制 【 在 talentlin8 (常藤屋) 的大作中提到: 】 : 我定义了一个普通窗体,里面定义arraylist如下: : public ArrayList linelist_Tra=new ArrayList (); : 想把另一个窗体里面的一个arraylist赋值给linelist_Tra,使用如下语句: : ...................
talentlin8机器人#7 · 2008/7/20
【 在 UnitTest 的大作中提到: 】 : <<.net框架程序设计(修订版)>> 6.3节 对象克隆 谢谢,我去看下