所以我显然对编程很新,但我想弄清楚为什么这不起作用
我正在尝试使用字符串myname,并将Mr.添加到它的开头。我知道我可以简单地只做myname = "Mr. " + myname
,但我试图理解如何使用方法来改变变量的值。那么,为什么不改变呢?
public class Program
{
public static void Main(string[] args)
{
string myname = "harry";
Console.WriteLine(myname); //output is harry
namechanger(myname); //this should modify harry to Mr. Harry
Console.WriteLine(myname); //output is still harry?
}
static string namechanger(string name)
{
name = "Mr. " + name;
return name;
}
}
答案 0 :(得分:6)
Strings are immutable和passed by value。每次创建字符串时,都不会更改。因此,与类的实例不同,您不能通过将字符串交给修改它的方法来修改字符串。
在这种情况下,由于您在return
中namechanger
修改了字符串,因此您需要做的就是确保将myname
分配给该方法的结果;像这样
myname = namechanger(myname);
原始类型(int
,float
,long
等)以这种方式工作,struct
个实例也是如此 - 所以请务必在将来查找,如果您在将结构的值传递给方法时不确定为什么结构的值没有改变的话。