Ключевое слово 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));
}
... или сделайте, как предложил Марсело.