返回信息流我定义了一个普通窗体,里面定义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还是跟着改变,但是我希望改变一个,另一个不跟着改变,不知道是不是赋值方法不对,求助各位帮忙解决。
这是一条镜像帖。来源:北邮人论坛 / soft-design / #28326同步于 2008/7/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[求助]c#中arraylist的赋值问题
talentlin8
2008/7/20镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 ericyosho 的大作中提到: 】
: 又是copy问题?
什么叫copy问题?不知道和我的问题一样不一样
我的问题是复制后,指向相同地址,改变一个,另外一个也会改变,但是我希望改变一个,另外一个不变,请问怎么解决呢?
copy
C#和java是一样的,所有的东西都只是引用,也就相当于指针。
想想为什么把指针传递到子函数里面去,可以改变外面的状态。
在C#里面,赋值的意思是说,同一块内存空间被两个引用指向;所以其中一个改变了内存里的内容,另一个也同样改变了。
你希望的做法是要重新分配一块内存出来,两个引用分别指向两块内存。这样就不会相互影响了。
【 在 ericyosho 的大作中提到: 】
: copy
: C#和java是一样的,所有的东西都只是引用,也就相当于指针。
: 想想为什么把指针传递到子函数里面去,可以改变外面的状态。
: ...................
太感谢你了,不过arraylist linelist=new arraylist();是不是就是新开辟了一块内存,如果不是,那是用什么语句呢?
我初学,还没学过java呢
【 在 talentlin8 的大作中提到: 】
: 太感谢你了,不过arraylist linelist=new arraylist();是不是就是新开辟了一块内存,如果不是,那是用什么语句呢?
: 我初学,还没学过java呢
<<.net框架程序设计(修订版)>> 6.3节 对象克隆
使用深度复制
【 在 talentlin8 (常藤屋) 的大作中提到: 】
: 我定义了一个普通窗体,里面定义arraylist如下:
: public ArrayList linelist_Tra=new ArrayList ();
: 想把另一个窗体里面的一个arraylist赋值给linelist_Tra,使用如下语句:
: ...................