10.1. Array
- 변수와 배열
: 300개의 변수 대신, 300개 용량을 가진 배열 변수를 “한 개”만 선언해서 사용
- 배열 선언과 초기화
: { }, Collection Initializer
: 필요한 용량에 맞는 Array를 선언
- 다차원 배열 (2차원) 선언과 초기화
: (세로, 가로)
: 1차원 배열을 원소로 갖는 배열
- 가변 배열 (Jagged Array)
:
10.2. System.Array
- C# 에서 모든것은 객체다
: 배열은 System.Array 클래스의 파생형이다
- System.Array 클래스의 주요 메서드와 프러퍼티
- System.Range 객체를 이용한 배열 분할
10.2. Collection
- ArrayLIst
: 배열과 달리 생성시 용량을 지정할 필요가 없다.
: Add(), RemoveAt(), Insert()
: 박싱, 언박싱으로 인한 오버해드가 높다.
- Queue
: 대기열
: FIFO
: Enqueue(), Dequeue()
- Stack
: FILO
: Push(), Pop()
- Hashtable
: Key, Value
: Hashing(탐색 속도)가 짧다.
10.3. Indexer
* 인덱스를 이용해 객체 내의 데이터에 접근하게 해주는 프로퍼티
* 프로퍼티와 인덱서의 차이점: 객체 내의 데이터에 접근시, Index 이용
10.4. Enumerable
* IEnumerable 인터페이스를 상속하는 형식
11. Generic
* 하나의 코드가 여러 가지 데이터 형식에 맞춰 동작하는 프로그래밍
* 데이터 형식을 다형성
* 형식 매개변수는 "모든" 데이터 형식을 대신한다.
11.1. Generic Method
11.2. Generic Class
11.3. where (Generic Type Constraint)
* U 는 Base 로부터 상속받은 클래스
* T 는 U로부터 상속받은 클래스
11.4. Generic Collection
* 컬렉션은 object 형식에 기반하기에 요소에 접근할 때마다 형식 변환되어 성능 문제를 야기한다.
* List<T>, Queue<T>, Stack<T>, Dictionary<TKey, TValue> 등
11.5. Generic Enumerable
* IEnumerable<T>
* 형식 변환으로 인한 성능 저하가 없으면서도 foreach 가능