La palabra clave es única params
azúcar sintáctico que le permite llamar a un procedimiento de este tipo con cualquier número de argumentos. Sin embargo, esos argumentos siempre se pasan al método como una matriz.
Esto significa que Foo(123, "hello", DateTime.Now)
es equivalente a Foo(new object[] { 123, "hello", DateTime.Now })
.
lo tanto, puede pasar los argumentos de Foo
directamente a string.Format
así:
void Foo(params object[] args)
{
Bar(string.Format("Some {0} text {1} here {2}", args));
}
Sin embargo, en este caso particular, usted exige tres argumentos (porque tiene {0}, {1} y {2 } en su formato). Por lo tanto, debe cambiar su código a:
void Foo(object arg0, object arg1, object arg2)
{
Bar(string.Format("Some {0} text {1} here {2}", arg0, arg1, arg2));
}
... o haga lo que le sugirió Marcelo.
No ha especificado el tipo de argumentos. Debería ser 'params string [] args'. Aparte de eso, podrías pasarlo como una matriz normal. 'params' es solo una palabra clave del compilador que crea una matriz a partir de los parámetros enviados. – HuBeZa
@HuBeZa: Especificó el tipo: es 'objeto'. ¿Por qué debería limitarse a los parámetros de cadena? – ChrisWue
@Chris, algo estaba mal con mi navegador o mis ojos. Puedo jurar que fue 'void Foo (params args [])'. Necesito unas vacaciones :) – HuBeZa