许多答案指出字符串是不可变的;虽然这是事实,但这与你的问题完全无关。
更相关的是,您误解了引用对于变量的工作方式。引用不是对某个的引用variable。将引用视为一段字符串。你从这个开始:
a----------------------Hello
然后你说“b = a”,这意味着将另一根绳子连接到相同的东西上a
附于:
a----------------------Hello
/
b---------------------
然后你说“现在将 b 附加到 Hi”
a----------------------Hello
b----------------------Hi
您认为参考文献的工作方式如下:
a----------------------Hello
然后我说b
是另一个名字a
:
a/b ----------------------Hello
然后我改变b
,这会改变a
,因为它们是同一事物的两个名称:
a/b ----------------------Hi
或者您可能认为参考文献是这样工作的:
a----------------------Hello
然后我说b
指的是a
:
b -------------- a ----------------------Hello
然后我改变b
,这间接改变了a
:
b -------------- a ----------------------Hi
也就是说,您希望引用variable, 代替value. You can在 C# 中执行此操作,如下所示:
void M(ref int x)
{
x = 1;
}
...
int y = 0;
M(ref y);
这意味着“在调用 M 期间,x 是 y 的另一个名称”。对 x 的更改会更改 y,因为它们是相同的变量。请注意,type变量的类型不必是引用类型。