Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在字符串上使用Replace时,通过ref传递不起作用_C# - Fatal编程技术网

C# 在字符串上使用Replace时,通过ref传递不起作用

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

我刚开始学习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);
     }
   }
} 
但我得到的结果是:

查诺布·瓦莱克

查诺布·瓦莱克

据我所知,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);

我对自己没有想到这一点感到非常失望。谢谢你的快速回复,也谢谢另外两位。我很失望自己没有想到这一点。感谢您的快速回复,也感谢其他两位。