이번에 정리 할 내용은 앞서 정리한 내용과 더불어 Dictionary 사용법에 대한 내용이다.
그 내용중 Dictionary 배열이라는 내용이다.
Dictionary는 key와 value의 pair 로 구성되는데 여기에서 혹시라도 key로 사용할 값이 하나더 생기는
경우가 있다. 개인적으로 상당히 나쁜 구조라 생각하는데.... 어쩔 수 없는 경우는 언제나 생기기 마련이고,
Dictionary가 이런 구조를 지원하니 알아두는 측면에서 정리를 한다.
즉 Dictionary<key,value>[] 혹은 Dictionary<key,value>[,] 이런 형태가 가능 하다는 것인데. 이를
사용할 때 좀 이해가 안되어 고생 좀 했던 기억에 정리를 남긴다.
아래의 예제를 보자.
이 예를 보면 혹시 이 글을 보는 분 중 이 코드가 정상 동작을 할꺼라 생각하신다면 제 대답은 아니 올 시다. 입니다.
저도 이 코드가 동작 할 꺼라 생각했지만, 여기서 중요한 오판이 있습니다.
실제 결과는 다음과 같은데...
이 이유는 Dictionary 배열을 생성할 때, [10,10]은 저장 공간의 전체크기를 설정하지 value가 되는 test_class 개개의 크기는
설정하지 않는다 입니다.
이 말인 즉,
생성에는 전체 크기를 할당(new) 했습니다.
하지만 값을 넣을 때는 그 개개의 크기를 다시 할당해야 한다는 말인데... 그림 실력이 없으니, 코드로 대신 하겠습니다.
위의 코드에서 보면 달라진 점이 두줄? 세줄? 있는데.
1. 삽입 for문 밖에서 test_class 할당하는 부분이 삭제 되었습니다.
2. test_class 할당이 for 문 안으로 들어왔습니다.
3. 값이 들어갈 부분에 대해서 다시 할당 하는 부분이 있습니다.
- testDicArray[i, i] = new Dictionary<int, test_class>(); 이 부분..
앞서 설명하려고 했던 부분이 이 내용인데. 말 재주가 없으니 코드로 대신할 수 밖에 없네요.
이렇게 하면 결과는 다음과 같이 됨을 확인 할 수 있습니다.
이상 끝.
'C#' 카테고리의 다른 글
[C#] Dictionary vs Hashtable (0) | 2013.11.19 |
---|---|
[C#] Dictionary 사용법 3 (0) | 2013.11.19 |
[C#] Dictionary 사용법 1 (0) | 2013.11.18 |
[C#] 배열 복사. (0) | 2013.10.22 |
[C#] 메모리 할당. (0) | 2013.10.21 |