我知道 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";
}
}
输出应该是“传递之前”“传递之后”,因为我将字符串作为参数传递,并且它是引用类型,所以第二个输出语句应该识别出 TestI 方法中的文本发生了更改。但是,我得到了“ before pass”“ before pass”,使得它看起来是通过值而不是通过 ref 传递的。我知道字符串是不可变的但我不明白这怎么能解释这里发生的事。我错过了什么?谢谢。