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

时间:2010-05-14 11:30:46

标签: 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'

1 个答案:

答案 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>与原始变量没有关系。