본문 바로가기

C# .Net

[c#] list, array, arraylist의 차이?

사실 성능이 강조되지 않는 개발이라면 세가지의 엄밀한 차이를 알 필요가 있을까 할수도 있지만,

그래도 알지 못한채로 세 자료타입을 사용하는건 영 찜찜한 일이기 때문에 한번 정리를 하기로 했다.

가장 명쾌하게 정리된 글이 스택오버플로우에 올라와있다.


참고글 https://stackoverflow.com/questions/32020000/what-is-the-difference-between-an-array-arraylist-and-a-list/32020072


string[] safelist = new string[3];

ArrayList item = new ArrayList();

List list = new List();

위에서부터 순서대로 각 객체의 선언 방법이다. 

참고글을 번역/정리하면 아래와 같다.


Array 

ArrayList

List 

- 고정된 배열 크기를 갖는다. (선언시 크기를 지정해주고, 삭제및 추가와 같은 변형이 불가능하다.)

- 같은 타입만 저장가능하다. (type safe하다)

- 다차원 배열 입력이 가능하다.

- 고정되지 않는, 추가/삭제의 변형이 가능한 객체타입이다.

- 제네릭 타입으로서 서로 다른 타입의 데이터가 배열에 저장가능하다. 때문에 데이터를 가져올때 박싱, 언박싱이 발생하며, type-safe하지 못한 이슈가 있다. 

- 마찬가지로 고정되지 않는 가변 객체 타입이다.

- ArrayList의 단점을 보완하여 컴파일시 배열의 타입추론을 한다. 즉, 같은 타입만 저장가능하고, 때문에 박싱/언박싱이 발생하지않는다.


array와 arraylist는 같은 배열이지만 서로 다른 특성을 갖고있고, 두 배열 타입의 정반합이 list라고 이해하면 될 것 같다.