传入多个参数作为字符串数组

fif*_*c04 0 c# arrays optional-parameters

我有一个接受字符串数组作为参数的函数

public static void LogMethodStart(string[] parameters)
{
    AddLogEntry("Starting Method", parameters); //this does not work
}

public static void AddLogEntry(string[] parameters)
{ 
    using(StreamWriter sw = new StreamWriter(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), FileName), true))
    {
        foreach (string p in parameters)
        {
            stream.WriteLine(p.ToString() + DateTime.Now.ToString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以传递要包含为Array的元素而无需执行一些Array.resize()操作并检查null等...?

ben*_*rce 5

将方法签名更改为此:

public static void LogMethodStart(params string[] parameters)
{
    AddLogEntry("Starting Method", parameters); //this does not work
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过以下两种方式进行调用:

LogMethodStart("string1","string2");
LogMethodStart(new string[] {"string1","string2"});
Run Code Online (Sandbox Code Playgroud)

这两种方法在方法内部看起来都相同。

编辑:

修改您的LogMethodStart主体:

var newParams = new List<string>(parameters);
newParams.Insert(0,"Starting Method");
AddLogEntry(newParams.ToArray());
Run Code Online (Sandbox Code Playgroud)