调用函数后为什么字符串值保持不变
这个问题在这里已经有了答案:
因为您要更改传入的参数的值,而不是原始值。
即当你传入时, str
变成x
一个副本。更改这对x
存储的值没有影响。
编辑:好吧,这是一个过于简单的解释,但正如指出的,更好的解释已经可用。 蒂姆的权利,字符串是不可变的,所以你不能改变存储在该引用中的字符串的内容,你只能用新的字符串替换它,但除非你明确指定参数为'ref',否则不能改变方法内的引用。
这不仅仅是字符串,你也不能将对象改变成新的对象,也就是说,这不起作用:
static void Change(ClassA aObj)
{
aObj = new ClassA(); // Won't hold when you leave the function
}
原因是您正在通过值来传递这些参数的参考。 这意味着你可以看到和弄乱那里的东西,但你不能改变它指向内存中的新参考插槽。
为了解决这个问题,你需要使用ref
/ out
关键字。
有关更详细的解释,请阅读。
尝试传递关键字ref
的字符串:
static void Change(ref string str)
{
str = "Test";
}
链接地址: http://www.djcxy.com/p/21011.html
上一篇: Why string value remains unchanged after calling function