2011-01-18 2 views
0

의 값을 업데이트 할 때 값을 업데이트하려고 시도하는 동안이 코드가 예외를 throw하면 첫 번째 값만 업데이트되고 예외가 발생합니다. "컬렉션이 수정되었으므로 열거 연산이 실행되지 않을 수 있습니다." !!!!컬렉션이 수정되었습니다. 열거 연산이 실행되지 않을 수 있습니다. 해시 테이블

 Hashtable hh = new Hashtable(); 
     hh.Add("val 1",null); 
     hh.Add("val 2", null); 

     foreach (string dd in hh.Keys) 
     { 
      hh[dd] = "some_value"; 
      // MessageBox.Show(dd.Value.ToString()); 
     } 

[key, value]가있는 해시 테이블 또는 이와 유사한 구조의 빈 값을 업데이트해야합니까?

답변

1

foreach 루프에서 해당 키를 열거하는 동안 잘못된 연산 인 Hashtable을 변경하려고하므로 hh.Keys를 복사해야합니다.

내가 '캐스트'에 대한 정의가 포함되어 있지 않습니다이 오류 'System.Collections.ICollection'을 가지고이 코드

foreach (string dd in new List<object>(hh.Keys.Cast<object>())) 
{ 
    hh[dd] = "some_value"; 
    MessageBox.Show(dd); 
} 
+0

을보십시오! , VS 2005을 사용 중입니다. – user486848

+0

전송 방법이 확장입니다. "using System.Linq;"을 추가하십시오. 또는 .NET의 최신 버전을 사용하십시오. 다른 방법으로 hh.Keys 배열을 복사 할 수 있습니다. – sidon

관련 문제