C# 在一个方法中在两个foreach循环之间传递字符串变量

C# 在一个方法中在两个foreach循环之间传递字符串变量,c#,foreach,C#,Foreach,这是我的代码: 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/a

这是我的代码:

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不存在。有什么方法可以把它放到那里吗?

您得到的错误不存在,因为当您调用方法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;
    }
    ...

您正在为内部foreach单个迭代的持续时间声明qfu,当您尝试调用它时,它超出了范围。您需要在内部foreach外部声明它,当您拥有适当的值时,退出foreach并进行调用。

这看起来有缺陷-您从XML中提取qfu的多个值,但在外部循环的每个迭代中只执行一个调用来加载\u SID。您希望在此调用中使用哪个值?第一个?最后?没关系,它们都是一样的?好吧,它似乎在工作,当我在代码中单击qfu时,它也会标记声明,所以我猜它是正确的,但是发生了另一个问题,当我尝试调试它时,我得到了一个未经处理的异常错误,它标记了行XmlNodeList getQfu=airplanes.SelectNodes/vEsup/airports/airport/;表示表达式必须计算为节点集。。有什么想法吗?为什么要缩进qfu=letiste….行。。。。?它不在原件中,并且任务不取决于if通知;在if的末尾。还是我只是发现了一只虫子;是的,有分号,这个缩进不影响行为,所以没关系。也许是臭虫: