은, 각각의 각 반복하는 동안 식 node.SelectNodes ("속성") 평가됩니까 우리가 내가이 경우에는 노드 목록반복
foreach(XmlNode nodeP in node.SelectNodes("Property"))
{
propsList.Add(nodeP.Attributes["name"].Value, true);
}
을 반복하는 데 사용하는 코드를 가정 해 봅시다 아니면 한번?
은, 각각의 각 반복하는 동안 식 node.SelectNodes ("속성") 평가됩니까 우리가 내가이 경우에는 노드 목록반복
foreach(XmlNode nodeP in node.SelectNodes("Property"))
{
propsList.Add(nodeP.Attributes["name"].Value, true);
}
을 반복하는 데 사용하는 코드를 가정 해 봅시다 아니면 한번?
한 번만. 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()
의 실제 호출은 한 번만 발생 ... (귀하의 경우)에 대한 문법 설탕입니다.
이 특정 질문과 관련이 없지만 열거자를 처분 할 수 있으면 처분됩니다. –
@Marc : 감사합니다! 편집 됨; I, 즉 –
하이 대한 코드는 두 좋다고 경우에, 대한 잊고 (0 = 1에서 INT; I
C#/.NET에 대해 묻고있는 것처럼 보입니다. SelectNodes() 호출은 한 번 수행 된 후 반환 값 (IEnumerable을 구현)에서 열거자를 검색합니다. 이 열거자는 루프 중에 사용되는 것이며 SelectNodes()에 대한 후속 호출은 필요하지 않습니다.
함께 작업하는 언어는 무엇입니까? –
이것은 XML과 특별히 관련이 없기 때문에 태그를 편집했습니다. foreach 루프가 작동하는 방식과 관련이 있습니다. 누구든지 동의하지 않으면 되돌릴 수 있습니다. –