[C#] foreach

Programming/C++_C#|2017. 12. 19. 10:58
반응형

C#에서  Dictionary를 foreach로  돌려 데이터값을 변경하려했는데 자꾸 오류가 뜨는 것이였다.

인터넷에 찾아보니 참조만 되고 직접변경을 안된다고 한다.

 

 

       public Dictionary<int, Key_State> m_dicKey = new Dictionary<int,Key_State>();

 

        public void KeyClear()
        {
            foreach (KeyValuePair<int, Key_State> items in m_dicKey)
            {
                if (m_dicKey[items.Key] == Key_State.Key_State_None)

                    continue;
                m_dicKey[items.Key] = Key_State.Key_State_None;
            }
        }

 

위와 같이 키보드나 마우스의 입력과 상태를 담아두는 Dictionary를 하나 만들고 모든 키의 상태를 none으로 만드는 코드를

foreach문으로 대입해줬는데 자꾸 invalidoperationException 오류가 나는 것이였다.

 

 

고친 코드

 

        public void KeyClear()
        {
            for (int i = 0; i < m_dicKey.Count(); ++i)
            {
                if (m_dicKey.Values.ToList()[i] != Key_State.Key_State_None)
                    m_dicKey[m_dicKey.Keys.ToList()[i]] = Key_State.Key_State_None;
            }
        }

 

for문을 이용해 위와 같이 접근해 데이터를 고쳐주었더니 해결

 

반응형

'Programming > C++_C#' 카테고리의 다른 글

fopen wb쓰기 null 에러  (0) 2018.08.31
[API] CopyFile함수  (0) 2018.06.27
[Map]의 insert에 대해 새로 알게 된 사실  (0) 2017.06.30
memmove함수  (0) 2017.04.05
[C++] 동적배열  (0) 2017.03.30

댓글()