は、それぞれのそれぞれの反復中に表現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:ありがとう!編集されました。 、 –
ことを忘れそのコードは、2つのため の優れている(INT I = 0; I
C#/ .NETについて質問しているようです。 SelectNodes()呼び出しが一度行われ、列挙子が戻り値(IEnumerableを実装する)から取得されます。その列挙子は、ループ中に使用されるものであり、その後のSelectNodes()への呼び出しは必要ありません。
これはどの言語で作業していますか? –
これはXMLとは特に関係がないため、タグを編集しました。これはforeachループの仕組みと関係しています。誰かが同意しない場合は、元気に戻してください。 –