编程语言
首页 > 编程语言> > 关于拳击/ c#的基本问题

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

作者:互联网

添加后,是否可以更改存储在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);

Strings themselves are immutable(至少在.NET中,这不是普遍适用的),在传递之后你无法改变它…你传递了变量的值,这是一个字符串引用 – 你还没有传递一个引用到原始变量,所以更改原始变量以引用不同的字符串不会做任何事情.当您更改变量时,您正在更改foo引用的字符串,而不是编辑其原始字符串,因为它是不可变的.

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

标签:c,boxing
来源: https://codeday.me/bug/20190526/1158927.html