Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Изменение string в методе


Автор: N1ko 6.7.2011, 18:43
Объясните мне, дураку, почему в данном случае srtring не меняется? Если в теле main запустить   ss += "x";, то всё норм.
Код

static void Main(string[] args)
{
   string str = "abc";
   Meth(str);
   Console.WriteLine(str);
   Console.ReadKey();
}
public static void Meth(string ss)
{
    ss += "x";
}

Автор: Экскалупатор 6.7.2011, 19:07
N1ko, а с чего вдруг он должен измениться?

Автор: vovogege 6.7.2011, 19:40
Потому что ссылка в метод передаётся "по значению", т.е. передаётся её копия.  Операция со строкой создаёт новую строку(string не изменяемый), в итоге получается новая ссылка на новую строку. Вот и всё. smile 

Автор: Artemon 6.7.2011, 19:53
Сделай так:

Код

public static void Meth(string& ss)
{
    ss += "x";
}

Автор: wester 6.7.2011, 19:56
Artemon, 
лучше ref

Автор: Artemon 6.7.2011, 20:25
wester,  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)