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等...?
将方法签名更改为此:
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)