1

これは私のコードです:

public void refresh_SID(string callsign) {
    // zjistime si vsechny potrebne informace o danem letu
    XmlNodeList lety = airplanes.SelectNodes("/vEsup/flights/LKPR/odlety/let");
    XmlNodeList sids = airports.SelectNodes("/vEsup/config/airports/LKPR/sidstar/sids/sid");
    XmlNodeList getQfu = airplanes.SelectNodes("/vEsup/airports/airport/");
    MessageBox.Show(callsign);
    foreach (XmlNode let in lety) {
        if(let.Attributes.GetNamedItem("callsign").Value == callsign) {
            string adep = let.Attributes.GetNamedItem("adep").Value;
            foreach(XmlNode letiste in getQfu) {
                if(adep == letiste.Attributes.GetNamedItem("icao").Value);
                string qfu = letiste.Attributes.GetNamedItem("rwy").Value;
            }
            string depRunway = let.Attributes.GetNamedItem("deprwy").Value; 
            string type = let.Attributes.GetNamedItem("type").Value;
            string exitpoint = let.Attributes.GetNamedItem("exitpoint").Value;
            string rules = let.Attributes.GetNamedItem("rules").Value;
            ComboBox sidRoute = new ComboBox();
            Load_SID(depRunway, qfu, type, exitpoint, rules, sids, sidRoute);
        }
    }
}

残念ながら、2つのforeachループを1つにマージすることはできません。これは、2番目のループではadep、最初のループで取得した文字列を使用する必要があり、2番目のループは別のforeachループである必要があるためです。 XMLファイル。したがって、Load_SIDメソッドを呼び出すとき、qfuは存在しません。そこに到達する方法はありますか?

4

2 に答える 2

0

メソッド Load_SID を呼び出すと、変数 qfu がスコープ内にないため、エラーが発生しません。

これを試して:

    ...
    string adep = let.Attributes.GetNamedItem("adep").Value;
    string qfu = string.Empty;
    foreach(XmlNode letiste in getQfu)
    {
       if(adep == letiste.Attributes.GetNamedItem("icao").Value);
            qfu = letiste.Attributes.GetNamedItem("rwy").Value;
    }
    ...
于 2012-12-12T16:53:41.903 に答える
0

内側の foreach の単一反復中に qfu を宣言しており、それを呼び出そうとするとスコープ外になります。内側の foreach の外で宣言する必要があり、適切な値を取得したら、foreach を終了して呼び出しを行います。

于 2012-12-12T18:48:13.207 に答える