C# 在字符串上使用Replace时,通过ref传递不起作用
我刚开始学习C#,我正在努力理解如何使用ref和out。 我试图构建我能想到的最简单的函数,但我遇到了错误,我不明白为什么C# 在字符串上使用Replace时,通过ref传递不起作用,c#,C#,我刚开始学习C#,我正在努力理解如何使用ref和out。 我试图构建我能想到的最简单的函数,但我遇到了错误,我不明白为什么 namespace cscheck { class Program { static void Main(string[] args) { string check = "Check noob wallak"; Console.WriteLine(check); swap(r
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);
}
}
}
但我得到的结果是:
查诺布·瓦莱克
查诺布·瓦莱克
据我所知,x和y是按值传递的,而check是按引用传递的,但是replace没有出现,我可以找出原因。replace()
返回一个字符串。您必须使用它作为结果,因此:
origin = origin.Replace(x, y);
Replace()
返回一个字符串。您必须使用它作为结果,因此:
origin = origin.Replace(x, y);
.Replace
返回一个新字符串,它不会修改原始字符串。字符串是不可变的。.Replace
返回一个新字符串,它不会修改原始字符串。字符串是不可变的。因为Replace
不会变异,它会创建一个新字符串。尝试:
origin = origin.Replace(x, y);
因为
Replace
不会变异,所以它会创建一个新字符串。尝试:
origin = origin.Replace(x, y);
我对自己没有想到这一点感到非常失望。谢谢你的快速回复,也谢谢另外两位。我很失望自己没有想到这一点。感谢您的快速回复,也感谢其他两位。