我有一个方法:下面的相关部分
void foo(various parameters)
{
tsk.run(various parameters);
}
现在使用tsk.run的参数需要间隔:
tsk.run(param 1 + " " param2 + " " param3);, etc depending on how many parameters.
参数将形成一个在命令行应用程序中使用的连续字符串。
最多会有4个参数,因此最好为每个参数执行重载方法。或者有没有办法使用Param关键字获取参数并将它们添加到tsk.run()方法。
是否值得使用param []然后循环,连接成一个字符串,然后将其运行?
答案 0 :(得分:7)
你不需要循环:
void Foo(params string[] args)
{
tsk.run(String.Join(" ", args));
}
答案 1 :(得分:1)
如果您知道参数的数量使用重载,因为它会更有效。
编译器将能够直接调用正确的方法,您可以指定默认值。
如果参数列表是动态创建的,并且长度可以变化更大,请使用参数。
或者在您的示例中跳过params并使用字符串列表或字符串数组。
答案 2 :(得分:0)
你可以通过使用
来做到这一点(params object[] parameters)
然后在inside方法中创建一个Strigbuilder并以所需的方式将列表中的每个参数附加到它。
它不清楚你的参数是否都是字符串,或者它们实际上是各种类型和对象签名应该使用。如果参数因类型而异,我认为使用对象的params方法会产生比帮助更多的问题。
如果它们都是字符串,我认为params是解决这种情况的理想方法。
答案 3 :(得分:-1)
void foo( params string[ ] parameters )
{
StringBuilder sb = new StringBuilder( );
foreach ( string parameter in parameters )
{
sb.Append( parameter );
sb.Append( " " );
}
tsk.run( sb.ToString( ) );
}
答案 4 :(得分:-1)
像这样:
void foo<T>(params T[] parameters) { tsk.run(string.Join<T>(" ", parameters)); }