c# - 是否可以分解一个数组,以便可以将其元素传递给带有 params 关键字的方法?

标签 c# parameters keyword variadic-functions params-keyword

以这段非编译代码为例:

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);

现在,对于这个特定的实例,您必须首先向该数组添加一些内容。

List<string> lstFolders = new List<string>(extraFolders);
lstFolder.Insert(0, callingModule);
lstFolder.Insert(0, version);
lstFolder.Insert(0, basefolder);
return AppendFolders(lstFolders.ToArray());

关于c# - 是否可以分解一个数组,以便可以将其元素传递给带有 params 关键字的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/192715/

相关文章:

c# - 创建新线程,传递参数

c# - WPF。列表框。如何将所选项目的最大值限制为 2?

c# - 如何使用 EMDK 2.6 关闭/重启移动设备 (Win CE 6.0)?

Javascript - 使用传递的参数更新数组

c++ - C++14 是否向 C++ 添加了新关键字?

java - 带有 Selenium 和 Java 关键字的机器人框架

Ruby:是否有关键字可以从自身内部调用方法(类似于 super)?

c# - 7 秒 EF 启动时间,即使对于微小的 DbContext

c# - 通过 LINQ 中的参数动态 "Not"(或与此相关的任何其他代码)

python - 如何在Python中将默认类类型参数设置为null?