Cast 목록<int> 목록<string> 습니다.NET2.0
문제
할 수 있습니 캐스팅 List<int>
하기 List<string>
어떻게 든?
나는 알 수 있었을 반복하고.ToString()일하지만,캐스팅으로 인해 발생하는 것으로 나타났다
나는 C#2.0(그래서 아무 LINQ).
해결책
.NET2.0 가 ConvertAll
방법할 수 있는 전달에서는 변환기 기능:
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
다른 팁
업데이트에 대한 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
C#을 할 수 있 2.0 List<T>.Convert
?그렇다면,나는 당신의 최고 추측하는 것이 사용하는 위임:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
합니다.
투표 글렌의 대답은 아마 올바른 코드;-)
당신이 할 수 없을 것이 직접 캐스팅으로 더 명시적 또는 암시적 던지기에서 존재하 int 문자열로,그것은 가 을 수 있는 방법이 있다.ToString()와 같은:-
foreach (int i in intList) stringList.Add(i.ToString());
편집 -또 다른 사람들이 지적으로는 오히려 화려하게,사용 intList.ConvertAll(대리인(int i){return i.ToString();});그러나 명확하게 당신은 아직도 사용합니다.ToString()및 그것의 전환이 아닌 캐스팅.
당신이 사용할 수 있습니다:
List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
이 있을 구축하는 새로운 목록입니다.근본적인 비트의 표현 List<int>
고 List<string>
은 완전히 호환되지 않에서 64 비트 플랫폼으로,예를 들어,개별 구성원들도 동일한 크기입니다.
이는 이론적으로 치료 List<string>
로 List<object>
-이것은 자신들의 흥미 진진한 세계의 분산과 반공,그리고 현재 지원되지 않습니다 C#으로 또는 VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
대체 매개 변수 결과 listOfInt 당신의 매개변수