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);
        }
    }
}

不幸的是,我无法将两个foreach循环合并为一个,因为在第二个循环中,我需要使用adep在第一个循环中得到的字符串,并且我需要第二个循环作为单独的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 回答