下面这段代码执行后,为什么结果是A string,而不是string being converted.?
class Class1
{
private string str = "Class1.str ";
static void StringConvert(string str1)
{
str1 = "string being converted. ";
}
static void Main()
{
string str = "A string ";
StringConvert(str);
Console.WriteLine(str); // 运行结果是:A string
}
}
我在机器上运行了上面的代码,发现结果是A string,而不是我想象中的string being converted.不知道为什么?
我认为当执行过StringConvert方法后,局部变量str作为实际参数由原来的值A string就变成了string being converted.当输出时,自然就是string being converted.了。可是机器上显示的却是A string。不知道为啥?请帮我看一下,谢谢了!
------解决方案--------------------至于原因也说下吧:
string str = "A string ";
str指向 "A string "
static void StringConvert(string str1)
{
str1 = "string being converted. ";
}
这时str1先指向 "A string ",但是当重新赋值str1 = "string being converted. "; 后,会另外分配一块地址,存放 "string being converted ",并且str1指向它..
但str的指向并没有变,始终指向 "A string "..