【发布时间】:2010-11-08 22:44:58
【问题描述】:
我知道 C# 中的“字符串”是一种引用类型。这是在 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 方法中的文本发生了变化。但是,我得到“通过之前”“通过之前”,这使它看起来是按值而不是通过引用传递的。我知道字符串是不可变的,但我不明白这将如何解释这里发生的事情。我错过了什么?谢谢。
【问题讨论】:
-
参见下面 Jon 提到的文章。您提到的行为也可以通过 C++ 指针重现。
-
MSDN 也有很好的解释。