1

この問題は私を困惑させました。ループで共有している変数があり、それが増加していません。

問題の変数は elrObject.currentLocation です。これをインクリメントするには、XML 要素が空の場合とそうでない場合の 2 つの方法があります。

コードは次のとおりです。

if (reader.Name == "Cell")
{  
    if (reader.IsEmptyElement)
    {       
        Response.Write("i ran<br>");
        elrObject.currentLocation++;
    }       
    else
    {
        while (reader.Read())
        {           
            if (reader.IsStartElement())
            {                                           
                //labels
                if (elrObject.currentLocation >= elrObject.index && elrObject.currentLocation <= elrObject.index + elrObject.colSpan)
                    Response.Write("i ran again<br>");

                Response.Write(elrObject.currentLocation + "<br>");
                elrObject.currentLocation++;

            }
            if (reader.Name == "Cell")
            break;
        }
    }
}

私が得ている出力は次のとおりです:
0
1
2
3
5

番号 4 は、XML 要素が空で、一番上のループが実行される場合です。変数をインクリメントしていますが、番号 4 は表示されず、完全にスキップされて 5 になります。以下も実行されるため、上のループが下のループの前に適切に実行されていると確信しています。

私は走った
私は再び走った

これは、上のループが下のループの前に実行されていることを確認します....しかし、番号4はそれ自体をスキップしています! これについて何か助けていただければ幸いです。

4

1 に答える 1

4

番号 4 を表示することは想定されていません。

Response.Write(elrObject.currentLocation + "<br>");

の中に

if (reader.IsEmptyElement)

ブロック。

于 2013-02-18T20:14:29.200 に答える