Фундаментальный вопрос о боксе / 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);
Сами строки неизменны (в .NET по крайней мере, это не понравильно верно), вы не можете изменить его после того, как оно прошло ... Вы проходили стоимость из переменной, которая является строкой ссылкой - вы не передавали ссылку на оригинал Переменная, Настолько изменив исходную переменную для обозначения другой строки ничего не делает. Когда вы меняете переменную, вы меняете, какую строку foo
Относится к, не редактировать свою исходную строку, как это неизменной.
Если проще подумать, вы проходите «что foo
означает «не»foo
сам ", так как только эта струна идет на то, что вы передаете его, это имеет нет связи к исходной переменной.