C# 에서 Dictionary란 키와 값을 가지고, 키를 이용해 값을

찾을 수 있는 기능을 하는 배열을 의미한다.

키와 값을 세트로 다루는 배열을 '연관 배열' 이라고 부른다고도 한다.

 

DictionaryList와 자주 비교되는 편인데

List는 인덱스 번호(숫자)를 사용하여 값을 얻는 다면,

Dictionary는 숫자 외의 모든 요소(문자열 등)를 키에 담고

값을 사용하는 부분이 List와의 차이점이라고 볼 수 있다.

 

Dictionary의 선언

// Dictionary<키(T), 값(T)> 오브젝트명 = new Dictionary<키, 값>();
Dictionary<Key, Value> Object = new Dictionary<key, value>();

 

그리고 Dictionary의 사용법에 관한 내용은 설명이 잘 되어있는

블로그 많이 있으니 알아서 찾아보면된다.

 

그리고 Dictionary를 왜 써야 하는지

어떤 식으로 사용하면 좋을지 모르겠는 사람(나)을 위한

 

Dictionary의 사용 예제

using UnityEngine;
using System.Collections.Generic; // Dictionary를 사용한다면 필요한 키워드

public class Character
{
    public string name;
    public string job;
    public int atk;
    public int hp;

    public Character(string name, string job, int atk, int hp) //생성자
    {
        this.name = name;
        this.job = job;
        this.atk = atk;
        this.hp = hp;
    }
}

public class CharacterManager : MonoBehaviour
{
    private Dictionary<int, Character> CharacterSelect = new Dictionary<int, Character>();

    private void Start()
    {
        // 캐릭터 정보를 Dictionary에 추가
        CharacterSelect.Add(1, new Character("김춘좌", "탱커", 0, 200));
        CharacterSelect.Add(2, new Character("박우니", "극딜러", 10, 100));
        CharacterSelect.Add(3, new Character("문어빵", "딜러", 5, 100));

        // Dictionary 내용 출력
        PrintCharacterInfo(3);
    }

    private void PrintCharacterInfo(int num)
    {
        if (CharacterSelect.ContainsKey(num))
        { 
            Character character = CharacterSelect[num];  //Dictionary에 저장한 데이터를 불어오는 방법 = 오브젝트명[Key];
            Debug.Log("이름: " + character.name);
            Debug.Log("직업: " + character.job);
            Debug.Log("공격력: " + character.atk);
            Debug.Log("체력: " + character.hp);
        }
        else
        {
            Debug.Log("존재하지 않는 캐릭터 입니다.");
        }
    }
}

 

실행 결과

 

이런식으로 생성자를 Value에 담아주면 여러 자료형태를 한번에 담을 수 있기때문에

데이터 관리에도 용이 하다는걸 알 수 있다.

반응형