2012-05-04 10 views
10

Wie kann ich einen Parameter von params mit mindestens einem Wert haben?C# Parameter mit mindestens einem Wert

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 
} 

Antwort

21

Just do:

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

Ich dachte auch über diese Problemumgehung nach, und ich denke, dass es nicht so sauber ist. Weil der 'erste' String nicht Teil der Iteration in' string [] '_ (falls überhaupt) _ ist, was in einigen Fällen möglicherweise nicht funktioniert. Gibt es keinen anderen Weg? –

+2

Aber was Sie sagen ist, dass Sie * immer * einen Parameter haben werden, um damit zu beginnen. Diese Lösung spiegelt das so sauber wie möglich wieder. – Nick

+11

@JohnIsaiahCarmona Dann verkette sie einfach zusammen: 'new [] {first} .Concat (s)'. Jetzt können Sie normalerweise über das Ergebnis "foreach". –

4

Sie diese Bedingungen nicht für params zur Compile-Zeit angeben.

Sie können dies jedoch zur Laufzeit überprüfen und eine Ausnahme auslösen, wenn Ihre angegebenen Bedingungen nicht erfüllt sind.

Verwandte Themen