은 []

2012-02-23 2 views
4

내가하는 방법이 바르 foo(params[] items)은 []

나는 컬렉션이 (목록, 설정, ...) 내가 항목

foo에 해당 항목을 보낼

어떤 구문을 사용할 수 있습니까?

답변

4

매개 변수를 배열로 전달하는 경우 항목으로 전달됩니다. 따라서 Collection.ToArray을 사용하십시오. 실제로 params을 사용할 때 알아두면 좋은 점이 있습니다. 첫 x 째 매개 변수로 전달하려는 의도로 null을 전달하면 널 (null) 배열로 사용됩니다.

SomeMethod(null); 

public void SomeMethod(params object[] items) 
{ 
... 
} 

항목 먼저 ELEM로하지 array 1의 길이와 null, null가됩니다 :이 같은 코드 그래서.

1

메서드 서명이 유효하지 않으므로 컴파일되지 않습니다. 당신은 여전히 ​​예를 들어, 항목의 유형을 지정해야합니다

foo(params string[] items) { } 

그때 당신은 단순히 충분히를 호출 할 수

foo("one", "two", "three"); 
foo(new string { "one", "two", "three"}); 
foo(myCollection.ToArray()); 

또는

foo(myArrayOfStrings); 

myArrayOfStrings가 배열 인 경우 문자열의.

또한 이후, 항목을 반복하기 전에 null 인수를 확인해야한다

foo(null); 

유효합니다.