我刚刚开始学习C#,我正在努力了解如何使用ref和out。 我试图构建我能想到的最简单的函数,但是我遇到了错误,我无法理解为什么。
namespace cscheck
{
class Program
{
static void Main(string[] args)
{
string check = "Check noob wallak";
Console.WriteLine(check);
swap(ref check, "noob", "boon");
Console.WriteLine(check);
}
static void swap(ref string origin ,string x, string y)
{
origin.Replace(x, y);
}
}
}
但我得到的结果是:
检查noob wallak
检查noob wallak
据我所知,x和y是通过引用传递的值传递的值,但是替换没有被删除,我可以理解为什么。
答案 0 :(得分:3)
因为Replace
没有变异,所以会创建一个新字符串。尝试:
origin = origin.Replace(x, y);
答案 1 :(得分:2)
Replace()
返回一个字符串。您必须将其用作结果:
origin = origin.Replace(x, y);
答案 2 :(得分:1)
.Replace
返回一个新字符串,它不会修改原始字符串。字符串是不可变的。