我知道在C#中 "string" 是引用类型。这是在MSDN上的描述。然而,以下代码却不能按照预期工作:
class Test
{
public static void Main()
{
string test = "before passing";
Console.WriteLine(test);
TestI(test);
Console.WriteLine(test);
}
public static void TestI(string test)
{
test = "after passing";
}
}
输出应该是"before passing" "after passing",因为我将字符串作为参数传递,并且它是引用类型,第二个输出语句应该认识到TestI方法中的文本已更改。 但是,我得到"before passing" "before passing",使它看起来像是按值而不是按引用传递。我知道字符串是不可变的,但我不明白这如何解释这里发生的事情。我错过了什么?谢谢。