사실 성능이 강조되지 않는 개발이라면 세가지의 엄밀한 차이를 알 필요가 있을까 할수도 있지만,
그래도 알지 못한채로 세 자료타입을 사용하는건 영 찜찜한 일이기 때문에 한번 정리를 하기로 했다.
가장 명쾌하게 정리된 글이 스택오버플로우에 올라와있다.
string[] safelist = new string[3];
ArrayList item = new ArrayList();
List list = new List();
위에서부터 순서대로 각 객체의 선언 방법이다.
참고글을 번역/정리하면 아래와 같다.
Array |
ArrayList |
List |
- 고정된 배열 크기를 갖는다. (선언시 크기를 지정해주고, 삭제및 추가와 같은 변형이 불가능하다.) - 같은 타입만 저장가능하다. (type safe하다) - 다차원 배열 입력이 가능하다. |
- 고정되지 않는, 추가/삭제의 변형이 가능한 객체타입이다. - 제네릭 타입으로서 서로 다른 타입의 데이터가 배열에 저장가능하다. 때문에 데이터를 가져올때 박싱, 언박싱이 발생하며, type-safe하지 못한 이슈가 있다. |
- 마찬가지로 고정되지 않는 가변 객체 타입이다. - ArrayList의 단점을 보완하여 컴파일시 배열의 타입추론을 한다. 즉, 같은 타입만 저장가능하고, 때문에 박싱/언박싱이 발생하지않는다. |
array와 arraylist는 같은 배열이지만 서로 다른 특성을 갖고있고, 두 배열 타입의 정반합이 list라고 이해하면 될 것 같다.
'C# .Net' 카테고리의 다른 글
[EFC#] effective c# - 4. LINQ 활용 (0) | 2019.03.27 |
---|---|
[EFC#] effective c# - 3. 제네릭 활용 (0) | 2019.03.26 |
[EFC#] effective c# - 2. 리소스 관리 (0) | 2019.03.26 |
[EFC#] effective c# - 1. 언어요소 (0) | 2019.03.26 |
[.net] .net Standard에서 Linq to sql 파일 생성하기 (0) | 2019.02.18 |