【问题标题】:showing ip address from arraylist to listbox [closed]显示从arraylist到列表框的IP地址[关闭]
【发布时间】:2018-01-21 14:30:50
【问题描述】:

我正在寻找在列表框中显示 IP 地址列表的代码。这是我想出的,但有一个问题。

    private ArrayList twoNetwork()
    {

        ArrayList addresses = new ArrayList();

        string[] stringArray = firstAddressTB.Text.Split('.');

        byte[] Ip = stringArray.Select(byte.Parse).ToArray();

        Ip[3] = 0;

         addresses.Add(Ip);            
         tableauIp[3] += 1;
         addresses.Add(Ip);

        return addresses;
    }

在这里,我正在尝试创建一个数组列表,比如说 192.168.0.0 并添加 192.168.0.1 。我的代码的问题是两个条目的数组列表都是 192.168.0.1。我想在我的列表框中同时显示 192.168.0.0 和 192.168.0.1。

【问题讨论】:

  • 从行 Ip[3] = 0 可以看出,问题不清楚
  • 永远不要使用ArrayList。使用List<T>

标签: c# wpf arraylist listbox


【解决方案1】:

创建两个数组实例并将它们添加到 ArrayList,否则,您最终会更新并添加两次相同的实例。

private ArrayList twoNetwork()
    {
        ArrayList addresses = new ArrayList();
        string[] stringArray = firstAddressTB.Text.Split('.');
        addresses.Add(stringArray.Select(byte.Parse).ToArray()); 
        addresses.Add(stringArray.Select(byte.Parse).ToArray()); 
        addresses[0][3] = 0;
        addresses[1][3] = 1;
        return addresses;
    }

【讨论】:

  • 谢谢你的回答!
【解决方案2】:

您的代码几乎不需要更正,如下所示,ArrayList 是在该 Private 方法中声明的,因此您的变量范围将仅在该范围内。请相应更改。

ArrayList addresses = new ArrayList();
private ArrayList twoNetwork()
{

    string[] stringArray = firstAddressTB.Text.Split('.');

    byte[] Ip = stringArray.Select(byte.Parse).ToArray();

    Ip[3] = 0;

     addresses.Add(Ip);            
     tableauIp[3] += 1;
     addresses.Add(Ip);

    return addresses;
}

【讨论】:

  • 谢谢,这是一个好点
猜你喜欢
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2010-09-29
相关资源
最近更新 更多