Unity 개발일지

[C#] Dictionary(딕셔너리) 사용법 본문

C#

[C#] Dictionary(딕셔너리) 사용법

아머르 2024. 4. 30. 20:23

TextRpg를 만드는 중 플레이어의 직업을 영문명이 아닌 한글로 정의할 수 없을까에 대해 고민하던 중

"키를 입력하면 값을 가져올 수 있는 방법이 있으면 어떨까?" 라는 조언을 듣고 찾다가

Dictionary를 사용해보자는 결론에 도달했다.

Dictionary

Dictionary는 Collection(자료를 모아 놓은 데이터 구조)의 일종으로 키와 값으로 구성된 데이터를 저장한다.

Dictionary는 중복된 키를 가질 수 없으며, 키와 값의 쌍을 이루어 데이터를 저장한다.

Divtionary를 사용하기 위해서는 using System.Colloection.Generic;이 상단에 선언되어있어야한다.

 

List와의 차이점

List는 인덱스 번호를 사용하여 요소의 값을 얻는다. 그에 반해 Dictionary는 Key값을 사용하여 Value를 취득하므로, 숫자 이외의 문자열 등을 키로 지정하여 세트의 값을 뽑아낼 수 있다. 항목과 그 값이 세트 데이터로 다루어질 필요가 있는 경우에 사전형을 이용한다.

 

Dictionary 사용법

Dictionary<Key데이터형, Value데이터형> 오브젝트명

                                           = new Dictionary<Key데이터형, Value데이터형>(); 

딕셔너리의 기본 선언형이다.

var 오브젝트명 = new Dictionary<Key데이터형, Value데이터형>();

으로도 선언할 수 있지만 var는 지역변수이므로 사용할 수 있는 곳이 제한된다.

Player.cs에서 열거형으로 Job 목록을 작성하였고, Player 클래스에서 Job 프로퍼티를 작성하였다.

Program.cs에서 GameManager 클래스에 player 인스턴스 생성 후,

열거형을 받을 수 있는 Job을 Key값으로, 한글명을 적을 수 있는 string을 Value값으로 지정하였다.

 

Add(Key, Value); 로 요소를 추가할 수 있으며 Remove(Key또는Value); 로 요소를 삭제할 수 있다.

 

Dictionary<Key, Value> 오브젝트명 = new Dictionary<Key, Value>()

{

    {Key0, Value0}

    {Key1, Value1}

    ...

}

 

으로 선언과 동시에 값을 지정해줄 수 있다.

List와 비슷하게 오브젝트명[Key값] 으로 Value를 호출할 수 있으며

Key값과 Value값을 모두 확인하고 싶다면 foreach문을 사용하고,

Key값만 얻고싶으면 오브젝트명.Keys / Value값만 얻고싶다면 오브젝트명 .Values 속성을 사용해보자.

Mage가 아닌 마법사로 표시된다!

 

 

 

Dictionary<TKey,TValue> 클래스 (System.Collections.Generic)

키와 값의 컬렉션을 나타냅니다.

learn.microsoft.com

반응형