2012-05-04 29 views
10

¿Cómo puedo tener un parámetro de params con al menos un valor?C# params con al menos un valor

public void Foo(params string[] s) { } 

public void main() 
{ 
    this.Foo(); // compile error 
    this.Foo(new string[0]); // compile error 
    this.Foo({ }); // compile error 
    this.Foo("foo"); // no error 
    this.Foo("foo1", "foo2"); // no error 
} 

Respuesta

21

Just Do:

public void Foo(string first, params string[] s) { } 
+0

También pensé en esa solución, y creo que no está tan limpia. Debido a que la cadena 'first' no formará parte de la iteración en' string [] '_ (si alguna vez) _, lo que podría no funcionar en algunos casos. ¿No hay otra manera? –

+2

Pero lo que estás diciendo es que * siempre * vas a tener un parámetro para empezar. Esta solución refleja eso tan limpiamente como sea posible. – Nick

+11

@JohnIsaiahCarmona Luego solo concatenarlos juntos: 'new [] {first} .Concat (s)'. Ahora normalmente puede 'foreach' sobre el resultado. –

4

No es posible especificar las condiciones para params en tiempo de compilación.

Sin embargo, puede comprobar esto en tiempo de ejecución y lanzar una excepción si no se cumplen las condiciones especificadas.

Cuestiones relacionadas