Сегодня я узнал о типах значений и ссылочных типах.Строки, которые не ведут себя как ссылочный тип
Я имею одно сомнение в примере кода ниже:
class Program
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
FunctionSB(sb);
Console.WriteLine(sb); //sb updated
customer c = new customer();
FunctionClass(c);
Console.WriteLine(c.s);//updated class value
String str = "";
FuntionString(str);
Console.WriteLine(str);//
}
private static void FunctionSB(StringBuilder sb)
{
sb.Append("sb updated");
}
private static void FunctionClass(customer c)
{
c.s = "updated class value ";
}
static void FuntionString(String str)
{
str = "updated value";
}
}
class customer
{
public string s;
}
Здесь значение строки строитель и член класса значение переменной обновляется, но почему FuntionString(str);
не обновляет значение str
? (Почему он не передан в качестве ссылки?)
Строка представляет собой простой тип. – Maess
http://www.yoda.arachsys.com/csharp/parameters.html http://www.yoda.arachsys.com/csharp/references.html – SLaks
Вы не мутируете тот же объект, что и вы, с построителем строк , вы заменяете одну ссылку на другую. Вы можете реплицировать это с помощью построителя строк, пытаясь заменить его новым экземпляром строкового построителя. – vcsjones