[c#] ArrayList에서 쉼표로 구분 된 문자열을 어떻게 생성합니까?

디버그 로그에 출력하기 위해 쉼표로 구분 된 목록으로 뱉어 내려는 처리 스크립트에 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일반적으로 클래스가 매우 깔끔하게 설계되지 않았습니다. 특히 완전히 중복되기 때문에 피하는 경향이 있습니다.


답변

다음과 같은 것 :

String.Join(",", myArrayList.toArray(string.GetType()) );

기본적으로 당신이 알고있는 루프 …

편집하다

어때 :

string.Join(",", Array.ConvertAll<object, string>(a.ToArray(), Convert.ToString));


답변

string.Join(" ,", myArrayList.ToArray()); .net 프레임 워크 4.5에서 작동합니다.


답변

다음은 문자열 목록에서 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을 사용해야합니다. 작성 당시에는 옵션으로 존재하지 않았습니다.


답변