以这个非编译代码为例:
public string GetPath(string basefolder, string[] extraFolders) { string version = Versioner.GetBuildAndDotNetVersions(); string callingModule = StackCrawler.GetCallingModuleName(); return AppendFolders(basefolder, version, callingModule, extraFolders); } private string AppendFolders(params string[] folders) { string outstring = folders[0]; for (int i = 1; i < folders.Length; i++) { string fixedPath = folders[i][0] == '\\' ? folders[i].Substring(1) : folders[i]; Path.Combine(outstring, fixedPath); } return outstring; }
这个例子是我正在使用的测试代码的简化版本.请,我只对直接与param关键字有关的解决方案感兴趣.我知道列表和其他类似的东西是如何工作的.
有没有办法"爆炸"extraFolders数组,以便它的内容可以与其他参数一起传递到AppendFolders?
只是通过它.folders参数首先是一个数组."params"功能是一点编译魔术,但它不是必需的.
AppendFolders(extraFolders);
现在,就这个特殊情况而言,你必须首先向该数组添加一些东西.
ListlstFolders = new List (extraFolders); lstFolder.Insert(0, callingModule); lstFolder.Insert(0, version); lstFolder.Insert(0, basefolder); return AppendFolders(lstFolders.ToArray());