添加后,是否可以更改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'
答案 0 :(得分:7)
要做到这一点,你必须设置值,如下所示:
string foo = "aaaaaaa";
var bar = new System.Web.UI.HtmlControls.HtmlGenericControl("div") { InnerHtml = foo };
bar.InnerHtml = "zzzzzz";
plcBody.Controls.Add(bar);
Strings themselves are immutable(至少在.NET中,这不是普遍适用的),在传递之后你无法改变它......你传递了变量的值 ,这是一个字符串引用 - 您尚未传递对原始变量的引用,因此更改原始变量以引用其他字符串不会执行任何操作。当您更改变量时,您正在更改哪个字符串foo
引用,而不是编辑其原始字符串,因为它是不可变的。
如果更容易想到,你会传递“foo
意味着”而不是“foo
本身”,所以一旦该字符串进入你传入的任何内容,它就会< em>与原始变量没有关系。