C#形参与实参,代码如下

[复制链接]
查看11 | 回复3 | 2013-5-27 16:44:48 | 显示全部楼层 |阅读模式
operate(a, b);传到operate(StringBuilder x, StringBuilder y)时,x记录的是a的地址,y记录的是b的地址。 x.Append(y);操作后,x对应的地址(a对应的地址)就变成"AB"了。y=x;操作后,y记录的地址变成x的地址,也就是a的地址了,就与b脱离关系了。所以,退出operate(a, b);时,b依然是"B",没有变成"AB"。所以,最终a + "," + b就是AB,B了。...
回复

使用道具 举报

千问 | 2013-5-27 16:44:48 | 显示全部楼层
执行到operate(StringBuilder x, StringBuilder y)后x,y是a,b的副本(即a,b的引用复制了一份 给x,y) 调用Append会操作引用所指向的对象所以a变为"AB"了y=x是将x的引用赋值给y 没有操作引用所指对象 b还是原来的 So,明白了吗?...
回复

使用道具 举报

千问 | 2013-5-27 16:44:48 | 显示全部楼层
x.Append(y);表示x与y想加,字符相加就是拼接了。等价于x+=y或者x=x+yy=x 表示给y赋值x...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行