본문 바로가기

C#

[C#] Dictionary 사용법 2


 이번에 정리 할 내용은 앞서 정리한 내용과 더불어 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