编译器在编译期间跳过foreach()循环

本文关键字:foreach 循环 编译 编译器 | 更新日期: 2023-09-27 18:08:51

我创建了一个通过telnet配置网络设备的方法。问题是我有多个值,我正在使用foreach()循环配置,但编译器正在跳过该循环。我使用c# WPF和模式是MVVM。下面是我的代码:

public ObservableCollection<VLANSPropertyClass> vlan { get; set; }
 public bool VLAN()
        {
            vlan = new ObservableCollection<VLANSPropertyClass>();
            string _command;
            _command = "config t 'n";
            WriteAPCommand(_command);
            ReadAPCommand();
            foreach(VLANSPropertyClass v in vlan)
            {
                Console.WriteLine("-----------------FOREACH STARTED----------------");
                _command = "vlan " + v.vid + "'n";
                WriteAPCommand(_command);
                ReadAPCommand();
                _command = "name " + v.vname + "'n";
                WriteAPCommand(_command);
                ReadAPCommand();
                _command = "interface " + v.vid + "'n";
                WriteAPCommand(_command);
                ReadAPCommand();
                _command = "ip address " + v.ip + " " + v.mask + "'n";
                WriteAPCommand(_command);
                ReadAPCommand();
                _command="exit'r";
                WriteAPCommand(_command);
                ReadAPCommand();
                _command = "interface " + v.vports + "'n";
                WriteAPCommand(_command);
                ReadAPCommand();
                _command = "switchport access " + v.vid + "'n";
                WriteAPCommand(_command);
                ReadAPCommand();
                _command = "copy runningconfig startupconfig'n";
                WriteAPCommand(_command);
                ReadAPCommand();
            }
            Console.WriteLine("-----------------FOREACH COMPLETED----------------");
            return true;
        }

vlan属性类是:

public class VLANSPropertyClass
    {
        public string vname { get; set; }
        public int S_No { get; set; }
        public string vid { get; set; }
        public string ip { get; set; }
        public string mask { get; set; }
        public string vports { get; set; }
    }

bool Vlan()函数存在于Model中,它是从ViewModel调用的。谁能告诉我为什么我的代码不能正确执行?

编译器在编译期间跳过foreach()循环

您正在创建一个新的ObservableCollection<VLANSPropertyClass>(),但它是空的。因此,当你对它进行迭代时,你永远不会在循环体中结束。在对集合进行迭代之前,需要在某个地方填充。(有可能你期望ReadAPCommand填充它,但你还没有告诉我们任何关于这一点。)

想想你希望数据从哪里来,以及你希望它如何进入你的集合。

你还应该仔细考虑你的属性和方法名——目前它们都没有遵循正常的。net约定,而且你的VLAN方法根本没有描述意味着什么。