.NET은 성능이 거의 동일한 일반 목록 컨테이너를 제공합니다 (배열 대 목록의 성능 질문 참조). 그러나 초기 화면에서 상당히 다릅니다.
배열은 기본값으로 초기화하기가 매우 쉽고 정의에 따라 이미 특정 크기가 있습니다.
string[] Ar = new string[10];
임의의 항목을 안전하게 할당 할 수 있습니다.
Ar[5]="hello";
목록을 사용하면 더 까다 롭습니다. 동일한 초기화를 수행하는 두 가지 방법을 볼 수 있습니다. 둘 다 우아하다고 부르는 것이 아닙니다.
List<string> L = new List<string>(10);
for (int i=0;i<10;i++) L.Add(null);
또는
string[] Ar = new string[10];
List<string> L = new List<string>(Ar);
더 깨끗한 방법은 무엇입니까?
편집 : 지금까지 답변은 목록을 미리 채우는 것보다 다른 용량을 나타냅니다. 예를 들어, 10 명의 용량으로 방금 생성 된 목록에서L[2]="somevalue"
편집 2 : 사람들은 내가 목록을 사용하려는 방식이 아니기 때문에 왜 이런 식으로 목록을 사용하고 싶은지 궁금합니다. 두 가지 이유를 알 수 있습니다.
목록이 "차세대"배열이라고 설득력있게 주장 할 수 있으므로 거의 패널티없이 유연성을 추가 할 수 있습니다. 따라서 기본적으로 사용해야합니다. 초기화하기가 쉽지 않을 수 있음을 지적하고 있습니다.
내가 현재 쓰고있는 것은 더 큰 프레임 워크의 일부로 기본 기능을 제공하는 기본 클래스입니다. 내가 제공하는 기본 기능에서 목록의 크기는 고급으로 알려져 있으므로 배열을 사용할 수 있습니다. 그러나 모든 기본 클래스에 동적으로 확장 할 수있는 기회를 제공하고 싶으므로 목록을 선택합니다.
List
을 (를) 대체하지 않습니다 Array
. 그들은 분명히 별개의 문제를 해결합니다. 고정 된 크기를 원하면 Array
. 를 사용 List
하면 잘못된 것입니다.