본문 바로가기
개발언어/C#

[C#] Dictionary<> foreach, for 루프

by 창용이랑 2020. 12. 22.
728x90

C++에서는 map

C#에서는 Dicrionary로 사용되는 컨테이너.

 

foreach문의 개념만 알고 있다면 Dictionary를 돌리면서 key 와 value를 얻어오는 과정은 어렵지 않다.

가장 기본적인 내용부터 보자면

 

Dictionary<> 컨테이너의 foreach 변수(?)는 KeyValuePair다.

foreach(KeyValuePair<string,bool> itemsin Dic)
{
    Console.WriteLine("{0} ,  {1}", items.Key, items.Value);
}

 

근데 여기서 주의해야 할 점은,

foreach문 안에서 원본 Dictionart<>에 해당하는 Dic의 Key와 Value값을 수정하려고 하면 에러가 난다.

 

즉, 억지로 편집하려고 하면 안된다.

 

예를 들어서, 이런식으로.

foreach(KeyValuePair<string,bool> itemsin Dic)
{
    Dic[items.Key] =true;
}

foreach는 Dictionary<> 컨테이너로부터 값을 얻어오는 역할이지,

에디터 역할은 아니다.

 

Dictionary<> 값을 바꾸고 싶다면 for문이 적합하다.

 

 

for문으로 Dictionary<> 돌리기.

 

for(int i =0; i< Dic.Count; i++)
{
    if(Dic.Keys.ToList()[i] == name)
    {
        Dic[name] = bCheck;
    }
    else if(Dic.Values.ToList()[i] ==true)
    {
        Dic[name] = bCheck;
    }
}

for문으로 루프를 돌려주면서 조건문 안에서는 Keys와 Values들의 List를 불러와 해당 컨테이너의 원하는 값을 가져온다.

foreach와 같은 역할이다.

for문 안에서는 Dictionary<> 컨테이너의 수정이 가능하니 참고하길 바란다.