此代码是否采用x并直接更改其内容或创建临时新字符串然后复制到x?
如果后者是真的,我不明白为什么我们使用ref。
public static void RemoveSpaces(ref string x)
{
x = x.Replace(" ", "");
}
答案 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;当你不使用参考时