2012-03-11 5 views
3

모든 유형 (예 : List<int> 또는 List<string>)의 수집 (아마도 IEnumerable<T> 또는 List<T>)을 받아 들일 수있는 방법이 있습니다. 방법의 내부일반 수집 매개 변수가있는 메소드

내가 컬렉션을 반복 할 필요가 각 요소는 문자열로 변환처럼, 하나의 최종 문자열로 함께 추가 :

"(12, 123, 22)" 

문제가 매개 변수 컬렉션 모든 유형이 될 수 있습니다 정의하는 방법이다. 나는 이것이 generics에 관한 것이지만 많은 것을 알지 못한다.

그러나, 나는 것은 방법의 정의는 다음과 비슷한 모습이 될 것입니다

public string myMethod(List<T> list) { } 

그러나, 컴파일러는 그것을 허용하지 않습니다. 올바른 구문을 알려주시겠습니까? 당신이 순서를 통해 열거 할 단지 필요가 있기 때문에

답변

2
class A 
{ 
    public string myMethod<T>(List<T> list) { } 
} 

또는

class B<T> 
{ 
    public string myMethod(List<T> list) { } 
} 

아마 당신은 IEnumerable<T>를 사용할 수 있습니다.


당신이 내장 함수를 사용하여 얻을 수 있습니다 같은 :

IEnumerable<X> input = new List<X> { new X(), new X() }; 
IEnumerable<string> s = list.Select(x => x.ToString()); 
string result = String.Join(", ", s); // "x, x" 

MSDN를 참조하십시오.

+0

고맙습니다. 그러나 나는 문제가있다. 때로는 List 대신 null을 전달해야합니다. 내가 그것을 시도 할 때 그것은 가능하지 않다. 컴파일러 오류가 발생했습니다. 오류 메서드 'MainWCFRole.DB.TrackDAO.getTracks (string, System.Collections.Generic.List )에 대한 형식 인수를 사용에서 유추 할 수 없습니다. 형식 인수를 명시 적으로 지정하십시오. –

+0

@Vojtech : 캐스팅 시도 :'(목록 ) null ' – abatishchev

+0

@Vojtech : 동일한 메소드의 오버로드는 몇 개입니까? – abatishchev

관련 문제