我有一个函数,它接受一个字符串数组作为参数。
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());
}
}
}
有没有一种方法可以将一个元素作为数组传递,而不必执行一些Array.resize()操作并检查是否为空等等...?
params
关键字。https://dev59.com/UGsz5IYBdhLWcg3w6MNS - Craig W.params
只适用于单个对象,而不适用于集合/列表/数组。 - fifamaniac04params
而不进行一些更改。你对你要完成的任务的描述相当模糊,所以很难比这更具体,但底线是,如果你想传递一个可变数量的参数(相同类型),则使用params
是正确的方法。如果你解释一下你的this does not work
注释的含义,那也会很有帮助。只是简单地看一眼似乎应该没问题。 - Craig W.LogMethodStart()
内调用AddLogEntry()
。请注意,我实际上是试图在将传递到AddLogEntry()
的数组前置...我没有传递相同类型的参数,一个是数组,一个是该数组类型的对象...运行我的代码并查看您是否获得我提到的编译错误。 - fifamaniac04params
并不能帮助消除空值检查,因为仍然可以使用原始语法传递null
(Foo((string[])null)
)。 - Alexei Levenkov