c# -为什么这个变量在通过一个方法之后没有被改变?
本文关键字:之后 方法 一个 改变 为什么 变量 | 更新日期: 2023-09-27 18:09:15
所以我显然是相当新的编程,但我试图找出为什么这是不工作
我正在尝试使用字符串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;
}
}
字符串是不可变的,并且通过值传递。每次创建字符串时,它都不会被更改。因此,与类的实例不同,您不能通过将字符串传递给修改它的方法来修改字符串。
在这种情况下,因为你return
在namechanger
修改字符串,所有你需要做的是确保你分配myname
给该方法的结果;就像
myname = namechanger(myname);
基本类型(int
, float
, long
等)以这种方式工作,struct
实例也是如此-因此,如果您不确定为什么结构体的值在传递给方法时不会改变,请务必在将来查找。