반복

2009-04-08 6 views
6

은, 각각의 각 반복하는 동안 식 node.SelectNodes ("속성") 평가됩니까 우리가 내가이 경우에는 노드 목록반복

foreach(XmlNode nodeP in node.SelectNodes("Property")) 
{ 
    propsList.Add(nodeP.Attributes["name"].Value, true); 
} 

을 반복하는 데 사용하는 코드를 가정 해 봅시다 아니면 한번?

+0

함께 작업하는 언어는 무엇입니까? –

+0

이것은 XML과 특별히 관련이 없기 때문에 태그를 편집했습니다. foreach 루프가 작동하는 방식과 관련이 있습니다. 누구든지 동의하지 않으면 되돌릴 수 있습니다. –

답변

11

한 번만. foreach는 문

{ 
    IEnumerator<XmlNode> enumerator = node.SelectNodes("Property").GetEnumerator(); 

    XmlNode nodeP; 

    while(enumerator.MoveNext()) 
    { 
     nodeP = enumerator.Current; 

     propsList.Add(nodeP.Attributes["name"].Value, true); 
    } 

    IDisposable disposable = enumerator as IDisposable; 

    if(disposable != null) disposable.Dispose(); 
} 

그래서 SelectNodes()의 실제 호출은 한 번만 발생 ... (귀하의 경우)에 대한 문법 설탕입니다.

+0

이 특정 질문과 관련이 없지만 열거자를 처분 할 수 있으면 처분됩니다. –

+0

@Marc : 감사합니다! 편집 됨; I, 즉 –

+0

하이 대한 코드는 두 좋다고 경우에, 대한 잊고 (0 = 1에서 INT; I

4

C#/.NET에 대해 묻고있는 것처럼 보입니다. SelectNodes() 호출은 한 번 수행 된 후 반환 값 (IEnumerable을 구현)에서 열거자를 검색합니다. 이 열거자는 루프 중에 사용되는 것이며 SelectNodes()에 대한 후속 호출은 필요하지 않습니다.