2009-03-21 4 views
28

미리 정의되지 않은 상한 경계를 가진 배열에서 문자열을 유지하는 데 가장 적합한 컨테이너는 무엇입니까?이 길이는 작성시 알려지지 않았습니다. 같은 간단한 코드최고의 문자열 컨테이너 : StringCollection, Collection <string>, List <string>, ArrayList, ..?

:

var list = new SomeContainer(); // size is unknown 
for()/foreach()/do()/while() // any loop 
{ 
    list.Add(string); 
} 

는 최적화 된 문자열 컬렉션, 아니면 그냥 Collection<string> 또는 List<string> 또는 ArrayList 같은 StringCollection인가? 그들 사이에 다른 점은 무엇입니까?

+0

성능 관련 구체적 질문 : https://stackoverflow.com/questions/7774374/performance-concern-stringcollection-vs-liststring –

답변

34

필요한 경우 List<string>은 아마도 가장 다재다능합니다. StringCollection은 형식화 컬렉션에 특정 클래스가 필요할 때 (제네릭없이) 1.1에서 편리했습니다. 당신이 유효성 검사를 제공하는 서브 클래스하려면 Collection<string>이 편리 등

, 3.5, LINQ 그들에 대한 추가 방법을 많이 제공 할 것입니다

어느 쪽이든 - 그러나 LINQ없이, List<T> 더 많은 기능 (Find, Sort 등)

있다
14

List<T>이 가장 효율적입니다.

Collection<T> 클래스는 다른 유형의 목록에 대한 래퍼 일 뿐이며 매개 변수없는 생성자는 Collection<T>List<T>으로 초기화합니다.

ArrayList은 본질적으로 List<object>과 동일하므로 항목을 읽을 때 String으로 캐스팅해야합니다.

StringCollectionArrayList의 형식 안전 래퍼입니다.