2023.02.23 - [C# 프로그래밍] - [C#] 컬렉션
컬렉션을 초기화하는 방법
1. 배열로 초기화
ArrayList, Queue, Stack은 배열의 도움을 받아 간단하게 초기화를 할 수 있습니다.
이들 컬렉션의 생성자를 호출할 때 매개 변수로 배열 객체를 넘기면 컬렉션 객체는 해당 배열을 바탕으로 내부 데이터를 채웁니다.
다음은 예제 코드입니다.
int[] arr = { 123, 456, 789 }
ArrayList list = new ArrayList(arr); //초기화 결과: 123, 456, 789
Stack stack = new Stack(arr); //초기화 결과: 789, 456, 123
Queu queu = new Queue(arr); //초기화 결과: 123, 456, 789
2. 컬렉션 초기자
ArrayList는 배열의 도움 없이 직접 컬렉션 초기자를 이용해서 초기화하는 것이 가능합니다.
ArrayList list = new ArrayList() { 11, 22, 33 };
컬렉션 초기자는 생성자를 호출할 때, 생성자 뒤에 {와 } 사이에 컬렉션 요소의 목록을 입력하여 사용합니다.
컬렉션 초기자는 IEnumerable 인터페이스와 Add() 메소드를 구현하는 컬렉션만 지원하므로 Stack, Queue는 사용할 수 없습니다.
두 컬렉션은 IEnumerable은 상속하지만 Add() 메소드를 구현하지 않고 있기 때문입니다.
3. 딕셔너리 초기자(Dictionary Initializer)
딕셔너리는 사전이라는 뜻이 있습니다.
저번 게시물에서 Hashtable을 설명할때 사전을 예로 들었는데, 이렇듯 딕셔너리 초기자는 Hashtable을 초기화할 때 이용합니다.
딕셔너리 초기자는 컬렉션 초기자와 비슷하게 생겼습니다. 다음은 딕셔너리 초기자의 예입니다.
Hashtable ht = new Hashtable()
{
["하나"] = 1, // ;가 아니라 ,를 이용해서 항목을 구분합니다.
["둘"] = 2,
["셋"] = 3
};
물론, Hashtable은 IEnumerable을 상속하고 Add() 메소드를 구현돼있기 때문에 컬렉션 초기자를 사용할 수 있습니다.
다음은 그 예시입니다.
Hashtable ht = new Hashtable()
{
{"하나", 1},
{"둘", 2},
{"셋", 3}
};
하지만 보통은 쓰기도 편하고 읽기도 편하고 개념적으로 꽉 매어져있는 딕셔너리 초기자를 사용할 것 같습니다.
'C# 프로그래밍' 카테고리의 다른 글
[C#] foreach가 가능한 객체 만들기 (0) | 2023.02.24 |
---|---|
[C#] 인덱서 (0) | 2023.02.24 |
[C#] 일반화 컬렉션 (0) | 2023.02.23 |
[C#] 컬렉션 (1) | 2023.02.23 |
[C++][C#] 클래스 객체 인스턴스 생성 (0) | 2023.02.22 |