问题描述
我对以下内容感到困惑。如果string是C#中的引用类型,并作为引用类型传递,为什么不更改方法内部的参数值会导致原始参数中的值发生改变?
确定方法中参考“ z”指向的值已更改为“迈克”吗?
public static void ChangeStudentName(string param)
{
param = "Mike";
}
string z = "Bill";
ChangeStudentName(z);
Console.WriteLine(z);
Output - Bill
解决方法
您想要ChangeStudentName(ref string param)
。请参阅说明ref (C# Reference)。从文章:
不要将按引用传递的概念与引用类型的概念混淆。这两个概念并不相同。可以通过ref修改方法参数,而不管它是值类型还是引用类型。通过引用传递时,没有值类型的装箱。