2013-02-20 3 views
0

ConcurrentDictionary에서 IEnumerator 형식이 있습니다. 나는이 IEnumerator를 통과하는 방법

System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<string,string>> 

    Ien = Concur_Dictionary.GetEnumerator(); 

    foreach (KeyValuePair<string, string> pair in Ien) -->Error here 
    { 
    } 

나는 다음과 같은 오류를 얻을 다음과 같은 방법을 사용하여 반복하는 것을 시도하고있다

Error 4 foreach statement cannot operate on variables of type 'System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<string,string>>' because 'System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<string,string>>' does not contain a public definition for 'GetEnumerator' 

나는이 IEnumerator를 통해 반복 수있는 방법에 대한 어떤 제안?

답변

5

일반적으로 IEnumerator을 반복하고 싶지 않습니다. 당신은 직접 IEnumerable 반복 : 어떤 이유로, 당신은 IEnumerable에 액세스 할 수없는

foreach (var pair in Concur_Dictionary) … 

, 경우에, 당신은이 작업을 수행 할 수 있습니다

while (Ien.MoveNext()) 
{ 
    var pair = Ien.Current; 
    … 
} 
+0

이 경우 매우 중요합니다. 스레드로부터 안전합니다. 그래서 나는 IEnumerator를 반복 할 필요가있다. – MistyD

+0

@MistyD :'foreach' 문은 장면 뒤에서'GetEnumerator()'를 호출한다. –

+0

해당 사항을 해결해 주셔서 감사합니다. – MistyD

1

당신은 그것의 MoveNext()을 사용할 수 있습니다.

var enumerator = getInt().GetEnumerator(); 
while(enumerator.MoveNext()) 
{ 
    //Line of codes.. 
} 

다음과 같이 할 수 있습니다.

또는이 작업을 수행 할 수 있습니다.

foreach (var item in collection) 
{ 
    // do your stuff 
} 

이 기능을 사용해보세요.

관련 문제