在数组、集合或列表之间进行选择

本文关键字:之间 行选 选择 列表 数组 集合 | 更新日期: 2023-09-27 17:59:01

我正在实现一个网络工具,我不知道该用什么来存储一组ip地址和要扫描的端口,用户应该输入这些地址和端口作为参数,即:Collection、List或只是Arrays。用户将输入一组地址和端口以扫描文本框。专家的建议以及原因。

internal  class Network
{
    internal enum Protocol { TCP, UDP };
    private string[] strIpAddresses;
    internal string GetIpAddress(int index = 0) { return strIpAddresses[index]; }
    internal void SetIpAddress(int index = 0, string ip = "127.0.0.1") { this.strIpAddresses[index] = ip; }

    private int[] intPorts;
    internal int GetPort(int index = 0) { return intPorts[index];  }
    internal void SetPort(int index = 0, int port = 80) { this.intPorts[index] = port; }

    internal Network(string[] ipAddr, int[] ports, int IP_ADDR_SIZE_C, int PORT_SIZE_C)
    {
        this.strIpAddresses = new string[IP_ADDR_SIZE_C];
        this.intPorts = new int[PORT_SIZE_C];
        this.strIpAddresses = ipAddr;
        this.intPorts = ports;
    }

提前谢谢。

在数组、集合或列表之间进行选择

首先,ListCollection

如果您有预定数量的元素,请使用Arrays。它们比Lists快。

如果您有动态数量的元素,并且需要添加、删除元素等,请使用List

例如:

这很好:

int[] someArr = new int[5]{1,2,3,4,5}

但这不是:

List<int> someArr = new List<int>(){1,2,3,4,5}

列表允许您轻松地动态添加或删除项目。它就像列表中的.Add(6)一样简单。

但在数组中,您必须执行以下操作:someArr[someArr.length] = 6;

此外,List提供了许多由Linq支持的扩展方法,但数组没有

考虑到您的要求,我建议您使用List,而不是Arrays,因为前者具有更大的灵活性,并且易于使用

我可能和你一样新。但出现的是trie数据结构。

http://en.wikipedia.org/wiki/Trie

如果你有子网,也许会有所帮助。但您可能需要找到任何实现[如何在c#中创建trie[http://geekyisawesome.blogspot.com/2010/07/c-trie.html]。我不确定网络工具中实际使用的是什么。

您可能应该使用List。添加/删除项目很容易。

集合更高级。当覆盖AddItemRemoveItem时,它们可以做额外的事情。

数组的长度是静态的,需要加长时必须重新创建。

我无法从您的代码中获得您的完美需求,但我已经足够理解了。因此,以下是数组和列表之间比较的要点。

1) 当需要插入数组的元素数量在编译时是已知的,并且在整个程序执行过程中保持固定时,请使用数组。当您不知道需要存储多少元素时,可以使用集合。因此,基本上,一个集合的大小可以动态增长。用于实现集合的数据结构取决于集合类型。

2) 只能在数组中存储类似类型的元素。当然,除非您声明一个类型为"Object"的数组。这意味着,我们可以在一个数组中存储一个整数、字符串和自定义对象。在集合中,您可以存储任何类型的元素,前提是它们都是对象。可以将基本数据类型存储在数组中。只能在集合中存储对象。

根据您的需要,我建议您应该选择列表而不是数组。