2012-05-04 8 views
10

Come si può avere un parametro di params con almeno un valore?Parametri C# con almeno un valore

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 
} 

risposta

21

Basta fare:

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

Ho anche pensato a questa soluzione alternativa, e penso che non sia così pulito. Perché la 'prima' stringa non farà parte dell'iterazione in' stringa [] '_ (se mai) _ che potrebbe non funzionare in alcuni casi. Non c'è altro modo? –

+2

Ma quello che stai dicendo è che * avrai sempre * un parametro con cui iniziare. Questa soluzione riflette ciò nel modo più pulito possibile. – Nick

+11

@JohnIsaiahCarmona Quindi concatenateli insieme: 'new [] {first} .Concat (s)'. Ora puoi normalmente "foreach" sul risultato. –

4

Non è possibile specificare tali condizioni per params a tempo di compilazione.

Tuttavia, è possibile verificarlo a run-time e generare un'eccezione se le condizioni specificate non sono soddisfatte.

Problemi correlati