返回信息流Echo e1 = new Echo();//Echo为一个类,他有一个count属性
Echo e2 =e1;
int x = 0;
while (x < 4)
{
e1.count = e1.count + 1;
if (x == 3)
{
e2.count = e2.count + 1;
}
if (x > 0)
{
e2.count = e2.count + e1.count;
}
x = x + 1;
}
为什么e2.count最后为24?不解啊!
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3635同步于 2012/3/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
请教高人指点!
wzl2011
2012/3/18镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
x=0: e1.count=e2.count=0+1,不进入任何if分支,继续运行;
x=1: e1.count=e2.count=1+1,进入if(x>0)分支,e2.count=2+2=4==>e1.count=4;
x=2: e1.count=e2.count=4+1,进入if(x>0)分支,e2.count=5+5=10==>e1.count=10;
x=3: e1.count=e2.count=10+1,进入if(x==3)分支,e2.count=e1.count=11+1,再进入if(x>0)分支,e2.count=e2.count+e1.count=24;
你把Echo e2=e1;.NET类是“引用类型”,也就是e2就是e1,
所以你所做的e1改动会影响到e2,同样对e2的改动会影响到e1
【 在 ahomer 的大作中提到: 】
: x=0: e1.count=e2.count=0+1,不进入任何if分支,继续运行;
: x=1: e1.count=e2.count=1+1,进入if(x>0)分支,e2.count=2+2=4==>e1.count=4;
: x=2: e1.count=e2.count=4+1,进入if(x>0)分支,e2.count=5+5=10==>e1.count=10;
: ...................
谢谢![ema4]