C# Dictionary 등에서 foreach를 쓰지 않고 루프를 도는 방법.

웹에서 Dictionary에 대해서 검색하면 거의 대부분 foreach와 KeyValuePair를 이용한 루프가 대부분이다.그러나 유니티에서 foreach를 쓰는건 전혀 권장되지 않기때문에 ‘꼭 이것뿐인가?’ 하는 고민을 많이 했었다. 겨우 찾았는데, 역시나 C#은 친절한 언어니까 준비가 되어있다!

[code]
public static Dictionary<string, string> dicSample
    = new Dictionary<string, string>();       
var enumerator = dicSample.GetEnumerator();
while (enumerator.MoveNext())
    {
          string key = enumerator.Current.Key; // 키는 이렇게
          string value = enumerator.Current.Value; // 값은 이렇게
    }
   
[/code]

이렇게 쓰면 foreach는 피할 수 있다. 또한 여기서는 주제와는 맞지 않아 끝에 메모만 하지만 Dictionary를 생성할 때 생성자 안에 주는 값을 빈칸으로 두지말고 IComparer 를 만들어서 넣어주면 향후 Dictionary간 비교를 할 때도 garbage가 생기지 않으므로 비교 할 일이 있다면 꼭 그렇게 하자. 그리고 GetEnumerator()가 꼭 Dictionary에만 한정된 것도 아니니 이곳저곳 찾아보자.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다