添加后是否可以更改存储在其中的值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'
为此,您必须设置值,如下所示:
string foo = "aaaaaaa";
var bar = new System.Web.UI.HtmlControls.HtmlGenericControl("div") { InnerHtml = foo };
bar.InnerHtml = "zzzzzz";
plcBody.Controls.Add(bar);
字符串本身是不可变 的(至少在 .NET 中,这不是普遍适用的),在它被传递后你不能改变它......你传递了变量的值,它是一个字符串引用 - 你没有传递了对原始变量的引用,因此将原始变量更改为引用不同的字符串不会做任何事情。当您更改变量时,您正在更改所foo
引用的字符串,而不是编辑其原始字符串,因为这是不可变的。
如果更容易想到,您传递的是“什么foo
意思”而不是“foo
本身”,因此一旦该字符串进入您传递的任何内容,它就与原始变量无关。