我有这个方法,它传递了一个文件数组。然后它将任何替换/
为\\
. 然后我调用一个方法并将数组传递给它,它将参数放入一个新数组,格式化它并返回新数组。接下来,我再次调用相同的方法,将相同的本地数组传递给它,以不同的格式对其进行格式化,并将out
两个数组都传递给它。问题是,第二个方法调用保留了第一个方法调用的格式。
public void Verify(string[] svnFiles, out string[] local, out string[] build)
{
//replace / with double \\
var transformed = TransformToFolders(svnFiles);
build = GetFiles(_buildPath, transformed);
local = GetFiles(_localPath, transformed);
}
private static string[] GetFiles(string path, params string[] files)
{
var moddedFiles = files;
for (var i = 0; i < files.Count(); i++)
moddedFiles[i] = string.Format(@"{0}\{1}", path, moddedFiles[i]);
return moddedFiles;
}
因此,当我调用时local = GetFiles(_localPath, transformed);
transformed
具有与moddedFiles
. GetFiles
用于files
直接操作它的参数并且我得到了相同的行为,所以这就是我尝试创建一个新数组的原因,但moddedFiles
似乎仍然只是一个引用而不是实际副本。有没有一种简单的方法来制作它的实际副本,这样我基本上就不会了_localPath\_buildPath\moddedFile
?