3

可能重复:
C# 字符串引用类型?

说,我有一个字符串叫做

string sample = "Initial value";

传递给方法 test() 后

public static void Test(string testString)
{
    testString = "Modified Value";
}

如果我在通过测试(样本)后打印“样本”,除了它应该打印“修改值”。

但它的打印“初始值”。如果字符串是引用类型,为什么会出现这种情况?

但同样的(预期的逻辑),适用于对象。有人可以请我清除吗?

4

2 回答 2

6

string这与作为引用类型无关。这是因为参数是按值传递的,而不是按引用传递的。

如果您像这样修改您的方法,以便通过引用传递参数:

public static void Test(ref string testString)
{
    testString = "Modified Value";
}

然后sample会进行修改。

有关参数传递的更多详细信息,请参阅本文

于 2012-09-04T09:09:43.957 回答
2

That's because of way how CLR passes the params to method.

Put simply:

string sample = "Initial value";  

Here sample variable refers to "Initial value" string instance stored in heap.

public static void Test(string testString) 
{ 
    testString = "Modified Value"; 
}

In the method you modify testString variable(copy of sample variable) making it references to "Modified Value" string in a heap, leaving original sample variable no affected.

于 2012-09-04T09:12:18.313 回答