这里是我的代码的简化:
void Foo(params object[] args)
{
Bar(string.Format("Some {0} text {1} here {2}", /* I want to send args */);
}
string.Format
需要作为 params
发送的参数。有什么方法可以将 args
集合转换为 string.Format
方法的参数吗?
最佳答案
params
关键字只是语法糖,它允许您使用任意数量的参数调用此类方法。但是,这些参数始终作为数组传递给方法。
这意味着 Foo(123, "hello", DateTime.Now)
等同于 Foo(new object[] { 123, "hello", DateTime.Now })
.
因此,您可以将参数从 Foo
直接传递给 string.Format
,如下所示:
void Foo(params object[] args)
{
Bar(string.Format("Some {0} text {1} here {2}", args));
}
但是,在这种特殊情况下,您需要三个参数(因为您的格式中有 {0}、{1} 和 {2})。因此,您应该将代码更改为:
void Foo(object arg0, object arg1, object arg2)
{
Bar(string.Format("Some {0} text {1} here {2}", arg0, arg1, arg2));
}
...或者按照马塞洛的建议去做。
关于C#:将集合转换为 params[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535992/