这段代码是否创建了临时字符串?

时间:2017-12-27 12:34:00

标签: c#

此代码是否采用x并直接更改其内容或创建临时新字符串然后复制到x?

如果后者是真的,我不明白为什么我们使用ref。

public static void RemoveSpaces(ref string x)
    {
        x = x.Replace(" ", "");
    }

3 个答案:

答案 0 :(得分:5)

是的,它会创建新的字符串 您在 DateTime[] array = new DateTime[6]; for (int i = 0; i < 6; i++) { array[i] = DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture); } var minDate = array.Min(); 上执行的任何操作都会创建新的字符串,因为 DateTime minDate = DateTime.MaxValue; for (int i = 0; i < 6; i++) { var date = DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture); ; if (date < minDate) minDate = date; } 是不可变类型。

答案 1 :(得分:1)

如果您不想使用ref,可以将签名从void更改为string,然后将其用作此

public static string RemoveSpaces(string x)
{
   return x.Replace(" ","");
}

我认为这是个人偏好的问题。

答案 2 :(得分:0)

如果您不使用ref,则在调用该函数时它将无效。

string y = "Subash Kharel";
RemoveSpaces(y);
Console.Write(y);

结果将是&#34; Subash Kharel&#34;当你不使用参考时