情况一:
Class Sample
{
int x;
int y;
}
Sample sample1, sample2;
经过一些操作sample1有值了,然后写语句
sample2=sample1;
然后,问题:接下来操作改变sample2 里的x或者y的值,sample1会不会随着有同样的变化?情况二:
Class Sample
{
int[] x;
int y;
}
Sample sample1, sample2;
经过一些操作sample1有值了,然后写语句
sample2=sample1;
然后,问题:接下来操作改变sample2 里的x或者y的值,sample1会不会随着有同样的变化?我的应用是第二种情况,我发现当我改变sample2里的y的值时,sample1中的y也随之变了。好像说sample2=sample1;只是传了个地址。(工程写了很大了,才发现这个严重的问题,悲催了。。)有人能帮我解读一下这个现象么?谢谢啦
Class Sample
{
int x;
int y;
}
Sample sample1, sample2;
经过一些操作sample1有值了,然后写语句
sample2=sample1;
然后,问题:接下来操作改变sample2 里的x或者y的值,sample1会不会随着有同样的变化?情况二:
Class Sample
{
int[] x;
int y;
}
Sample sample1, sample2;
经过一些操作sample1有值了,然后写语句
sample2=sample1;
然后,问题:接下来操作改变sample2 里的x或者y的值,sample1会不会随着有同样的变化?我的应用是第二种情况,我发现当我改变sample2里的y的值时,sample1中的y也随之变了。好像说sample2=sample1;只是传了个地址。(工程写了很大了,才发现这个严重的问题,悲催了。。)有人能帮我解读一下这个现象么?谢谢啦
如果我想sample2=sample1,但是希望保证赋值之后sample2和sample1仍是两个不相干的。如何操作?难得要把类里的各个定义依次copy一下?求助啊
引用类型传递,修改成员,原始对象发生变化,因为修改的就是原始地址的值.
值类型传递,拷贝一个同样值的数据,修改拷贝对象,对原对象无影响.
比如第一种情况:
在类的构造函数中这样写
public Sample(int x,int y)
{
this.x=x;
this.y=y;
}
然后你那句sample2=sample1 改为 sample2=new Sample(sample1.x,sample1.y);
Public Sample(int x,int y)
{
this.x=x;
this.y=y;
}然后你那句赋值操作改为:sample2=new Sample(sample1.x,sample1.y);
Class Sample
{
int x;
int y;
public Sample()
{
}public Sample(Sample objectSam)
{
x=objectSam.x;
y=objectSam.y;
}
public static Sample Coyp(Sample objectSam)
{
........
}}
}
main()
{
sample2=new Sample(sample1);
sample2=Sample.copy(sample1);
}
你喜欢那种都行
相不改变把class 改为struct就可以了
即
Struct Sample
{
int x;
int y;
}
Sample sample1;
Sample sample1 = new sample();
sample1 = sample2;