namespace Test
{
class Program
{
static void Main(string[] args)
{
A a = new A();
a.MyString = "Metallica ";
PrintA(a);
Console.WriteLine(a.MyString);
string name = "Linkin ";
Print(name);
Console.WriteLine(name);
Console.ReadLine();
}
static void PrintA(A a)
{
a.MyString = a.MyString + "Rocks";
Console.WriteLine(a.MyString);
}
static void Print(string text)
{
text = text + "Park";
Console.WriteLine(text);
}
}
class A
{
public string MyString { get; set; }
}
}
输出:
Metallica Rocks
Metallica Rocks
林肯公园
林肯
我的问题是,如果string是引用类型(即类),那么为什么它不会在方法 Print() name 的值>被调用,就像参考变量 a 的成员 MyString 一样。
答案 0 :(得分:1)
在.NET中,String是一种引用类型。它通过引用传递。但是,当您对字符串值进行更改时,会创建另一个新副本,而原始文件保持不变。这就是为什么它的行为就像是按值发送