728x90

Dictionary는 List 등과 비슷한, .Net에서 지원하는 컬렉션 클래스입니다.

다른 클래스와 마찬가지로 차지하는 메모리와 크기가 동적으로 변화하며, 값을 넣을 수 있습니다.


하지만 하나 차별성이 있는데, Dictionary에 저장된 값은 각각 하나씩 짝이 지어져 있습니다.

물론, 어느 걸 짝을 짓는다던가 하는 건 코더가 임의로 지정할 수 있구요.

(ex: int형 24와 string형 "adflsdf"가 연결되어 있음)

짝이 지어진 두 개에서, 하나를 Key라고 하고(오오오오오! Key라구! Key! 오오오오오!)

하나를 Value라고 하는데요, Dictionary는 Key의 값을 주면 Value가 반환되어 나옵니다.


조금 더 이해하기 쉽게 말해 보자면, Dictionary는 사전입니다. 사전이잖아요? 딕셔너리니까.

사전은 '어떤 단어나 문장의 뜻을 알기 위해서' 쓰죠? 사용자가 단어를 주면 사전은 뜻을 주죠.


Dictionary 클래스에 투영시켜 보죠. 위의'단어'가 Key고, '뜻'이 Value입니다.

Key를 주면 Value가 반환되어 나옵니다.

==================================================================

public class DictionaryClass

{

private Dictionary<int, string> goodsDictionary = new Dictionary<int, string>();


public DictionaryClass()

{

goodsDictionary.Add(1, "Mug Cup");

goodsDictionary.Add(2, "Photo Album");

goodsDictionary.Add(3, "Clock");


Console.WriteLine("The first goods is " + goodsDictionary[1]);

Console.WriteLine("and The second goods is " + goodsDictionary[2]);

}

}


===================================================================


goodsDictionary를 선언할 때 Dictionary<int, string>으로 객체를 명시했죠?

<int, string>에서 첫번째가 Key의 유형, 두번째가 Value의 유형입니다.


여느 컬렉션과 마찬가지로, Dictionary도 추가 시에 Add() 메소드를 사용합니다.

다만 여기서는 매개변수 혹은 리터럴을 두개 받는다는 점이 틀리군요.

당연한 일이죠. 이거야말로 Dictionary의 차별성이니까!


여튼, Add()로 값을 등록한 이후에는 goodsDictionary[1] 과 같이 Key의 값을 명시해줌으로써

그 Key에 대응하는 Value를 반환해주게 됩니다. 저 경우에는 "Mug Cup"이라는 문자열이 나오겠죠?



=================================================================


private void dictionaryPractice()

{

Dictionary<int, string> imsiDic = new Dictionary<int, string>();

foreach (int key in goodsDictionary.Keys)

{

imsiDic.Add(key, "Kudryavka " + goodsDictionary[key]);

}

goodsDictionary = imsiDic;

}


=================================================================


Dictionary에 있는 Value값을 변경해주는 코드입니다. ㅇㅁㅇ;

잠깐 만들어 봤어요.


그냥 foreach(string str in goodsDictionary.Values) 한다음에 str에 문자열 더했더니 안되더라구요.

foreach 문 도는 중에는 식별자 등의 그 자체를 변경할 수가 없다는 게 생각나서 조금 더 써 봤음.



[출처]
[C#] Dictionary|작성자 에군이


728x90

+ Recent posts