C#의 자료구조 클래스 = Collections
Generic / Non-Generic
Generic : 여러 자료형에 맞게 사용할 수 있도록 데이터 요소 타입을 확정하지 않고 데이터 타입을 T로 받아들이게 정의한 것
.net 2.0이하에서는 Non-Generic Collections를 썼는데, 속도와 타입안정성의 문제가 생김 Object로 저장하기 때문에 데이터를 저장,추출할 때 형변환이 무조건 필요해서 오류 발생 가능성이 높아짐
Generic → 선언할 때 어떤 자료형인지 알려줌 → 그 자료형으로 데이터 저장 + 추출
Non-Generic → 선언할 때 안알려줌 → 박싱/언박싱이 일어남 Object로 변환해서 데이터 저장 + 추출 [ 형변환 계속 일어남 + 오류 가능성 ↗️ ]
박싱/언박싱 : 값을 Object로 변환 / Object를 값으로 변환 → 많은 시간을 소모
박싱 : 보통 암시적으로 되고, 명시적으로도 가능
언박싱 : Object에서 가져온 값이 박싱한 값인지 확인 → 이 값을 값 형식 변수에 복사
Generic | Non-Generic | |
---|---|---|
키/값 쌍 저장 | Dictionary<TKey, TValue> | Hashtable |
인덱스로 항목 접근 | Lits<T> | Array, ArrayList |
선입선출 | Queue<T> | Queue |
후입선출 | Stack<T> | Stack |
순서대로 항목 접근 | LinkedList<T> | LinkedList |
정렬된 컬렉션 | SortedList<T> | SotredList |
<aside> 📌 스레드 안전 컬렉션