关于拳击/ c#的基本问题

max*_*axp 4 c# boxing

bar添加后可以更改内部存储的值吗?

我试过'拳击'字符串,foo但它不起作用.

string foo = "aaaaaaa";
var bar = new System.Web.UI.HtmlControls.HtmlGenericControl("div") { InnerHtml =foo };
foo = "zzzzzz";
plcBody.Controls.Add(bar);//want this to contain 'zzzzzz'
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 7

要做到这一点,你必须设置值,如下所示:

string foo = "aaaaaaa";
var bar = new System.Web.UI.HtmlControls.HtmlGenericControl("div") { InnerHtml = foo };
bar.InnerHtml = "zzzzzz";
plcBody.Controls.Add(bar);
Run Code Online (Sandbox Code Playgroud)

字符串本身是不可变的 (至少在.NET中,这不是普遍的真实),在传递之后你无法改变它...你传递了变量的,这是一个字符串引用 - 你还没有传递了对原始变量的引用,因此更改原始变量以引用不同的字符串不会执行任何操作.当您更改变量时,您正在更改哪个字符串foo引用,而不是编辑其原始字符串,因为它是不可变的.

如果你更容易想到,那么你传递的是"什么foo意思"而不是" foo本身",所以一旦那个字符串进入你传入它的任何东西,它就与原始变量无关.