디버그 로그에 출력하기 위해 쉼표로 구분 된 목록으로 뱉어 내려는 처리 스크립트에 ID의 ArrayList를 저장하고 있습니다. 반복하지 않고 쉽게 얻을 수있는 방법이 있습니까?
편집 : .net 2.0 이상에서 사용할 수있는 List (Of T)를 지적한 Joel에게 감사드립니다. 그것은 당신이 그것을 사용할 수 있다면 일을 더 쉽게 만듭니다.
디버그 로그에 출력하기 위해 쉼표로 구분 된 목록으로 뱉어 내려는 처리 스크립트에 ID의 ArrayList를 저장하고 있습니다. 반복하지 않고 쉽게 얻을 수있는 방법이 있습니까?
편집 : .net 2.0 이상에서 사용할 수있는 List (Of T)를 지적한 Joel에게 감사드립니다. 그것은 당신이 그것을 사용할 수 있다면 일을 더 쉽게 만듭니다.
답변:
예, 저는 제 질문에 답하고 있지만 아직 여기에서 찾지 못했고 이것이 다소 매끄러운 것이라고 생각했습니다.
... VB.NET에서 :
String.Join(",", CType(TargetArrayList.ToArray(Type.GetType("System.String")), String()))
... C #에서
string.Join(",", (string[])TargetArrayList.ToArray(Type.GetType("System.String")))
이것들에 대한 유일한 "가득한 점"은 변환이 제대로 이루어 지도록 Option Strict를 사용하는 경우 ArrayList에 문자열로 저장된 항목이 있어야한다는 것입니다.
편집 : .net 2.0 이상을 사용하는 경우 List (Of String) 유형 개체를 만들고 필요한 것을 얻을 수 있습니다. 이 문제를 제기 한 Joel에게 감사드립니다!
String.Join(",", TargetList.ToArray())
지금까지의 솔루션은 모두 매우 복잡합니다. 관용적 해결책은 의심 할 여지없이 다음과 같아야합니다.
String.Join(",", x.Cast(Of String)().ToArray())
새로운 프레임 워크 버전에서는 멋진 곡예가 필요하지 않습니다. 그다지 현대적이지 않은 버전을 가정하면 다음이 가장 쉬울 것입니다.
Console.WriteLine(String.Join(",", CType(x.ToArray(GetType(String)), String())))
mspmsp의 두 번째 솔루션도 좋은 접근 방식이지만 AddressOf
키워드가 누락되어 작동하지 않습니다 . 또한 Convert.ToString
다소 비효율적이며 (불필요한 내부 평가가 많음) Convert
일반적으로 클래스가 매우 깔끔하게 설계되지 않았습니다. 특히 완전히 중복되기 때문에 피하는 경향이 있습니다.
MS.VB.CS.Conversions.ToString
간단한 ToString
호출이 되는 도우미 함수를 호출합니다. 그러나이 방법조차도 직접 y 라고 부르지 않을 것입니다 (VB 캐스트 연산자를 통하는 것과는 반대로).
다음과 같은 것 :
String.Join(",", myArrayList.toArray(string.GetType()) );
기본적으로 당신이 알고있는 루프 ...
편집하다
어때 :
string.Join(",", Array.ConvertAll<object, string>(a.ToArray(), Convert.ToString));
다음은 문자열 목록에서 String.Join ()을 사용하여 쉼표로 구분 된 문자열 생성을 보여주는 간단한 예입니다.
List<string> histList = new List<string>();
histList.Add(dt.ToString("MM/dd/yyyy::HH:mm:ss.ffff"));
histList.Add(Index.ToString());
/*arValue is array of Singles */
foreach (Single s in arValue)
{
histList.Add(s.ToString());
}
String HistLine = String.Join(",", histList.ToArray());
foo.ToArray().Aggregate((a, b) => (a + "," + b)).ToString()
또는
string.Concat(foo.ToArray().Select(a => a += ",").ToArray())
매우 오래되었으므로 업데이트 중입니다. 물론 string.Join을 사용해야합니다. 작성 당시에는 옵션으로 존재하지 않았습니다.