以下代码如何工作?
public void SomeMethod()
{
StringBuilder sb = new StringBuilder();
AppendFoo(sb);
String foo = sb.ToString(); // foo is "foo"
String s = String.Empty;
AppendBar(s);
String bar = s; // bar is empty
}
public void AppendFoo(StringBuilder x)
{
x.Append("Foo");
}
public void AppendBar(String x)
{
x = x + "Bar";
}
如果两者StringBuilder
都是String
引用类型,为什么字符串对象在通过AppendBar
方法传递时没有改变,而 StringBuilder 对象在传递给AppendFoo
方法时改变,因为方法的两个参数都将引用类型作为参数?