2012-05-04 8 views
10

Jak mogę mieć parametr o wartości params z co najmniej jedną wartością?C# parametry z co najmniej jedną wartością

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 
} 

Odpowiedz

21

Wystarczy zrobić:

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

Też myślałem o tym obejściu, i myślę, że to nie jest tak czyste. Ponieważ łańcuch 'first' nie będzie częścią iteracji w' string [] '_ (jeśli w ogóle) _, który może nie działać w niektórych przypadkach. Czy nie ma innej drogi? –

+2

Ale mówisz, że na początku zawsze masz jeden parametr. To rozwiązanie odzwierciedla to tak czysto, jak to możliwe. – Nick

+11

@JohnIsaiahCarmona Następnie po prostu połącz je razem: 'new [] {first} .Concat (s)'. Teraz możesz normalnie 'foreach' nad wynikiem. –

4

Nie można określić takie warunki params w czasie kompilacji.

Jednak można to sprawdzić w czasie wykonywania i wyrzucić wyjątek, jeśli określone warunki nie są spełnione.

Powiązane problemy