2012-05-04 5 views
10

적어도 하나의 값을 가진 params 매개 변수를 어떻게 가질 수 있습니까?적어도 하나의 값을 가진 C# 매개 변수

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 
} 

답변

21

그냥 할 : 당신은 컴파일 시간에 params에 대한 이러한 조건을 지정할 수 없습니다

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

나는 또한 그 해결 방법에 대해 생각하고 그것이 깨끗하다고 ​​생각하지 않습니다. 왜냐하면'first' 문자열은 어떤 경우에는 작동하지 않을 수도있는'string []'_ (있는 경우) _에서 반복의 일부가 아니기 때문입니다. 다른 방법이 없습니까? –

+2

그러나 당신이 말하는 것은 당신이 항상 * 하나의 매개 변수를 가지고 시작한다는 것입니다. 이 솔루션은 가능한 한 깨끗하게 반영합니다. – Nick

+11

@JohnIsaiahCarmona 그런 다음 함께 연결하면됩니다 :'new [] {first} .Concat (s)'. 이제 결과를 정상적으로 'foreach'할 수 있습니다. –

4

.

그러나 런타임에이를 확인할 수 있으며 지정된 조건이 충족되지 않으면 예외가 발생할 수 있습니다.

관련 문제