你没有改变它的价值.您刚刚将空引用的副本复制到局部变量中,您将局部变量设置为引用新字符串,但在所有这些中,您从未更改原始引用以引用除null之外的任何内容.
确实,字符串是引用类型,但即使使用引用类型,更改引用本身也不同于更改引用对象的属性.
例如:
Foo a = new Foo ();
Foo b = a;
b.Bar = 7;
b = new Foo ();
b.Baz = 12;
Run Code Online (Sandbox Code Playgroud)
在此示例中,a.Bar将为7,因为在a和b时引用相同的对象.但是,a.Baz未设置为12,因为b被更改为引用不同的对象.变量a仍然指的是创建的第一个对象,而不是第二个.
字符串另外不允许您修改对象(它是不可变的),但这是一个旁边 - 您的代码不起作用的原因是您正在修改引用,而不是修改对象.