我正在实现一个网络工具,我不知道用什么来存储用户希望作为参数输入的用于扫描的IP地址和端口集,即:集合,列表或只是数组。用户将输入一组地址和端口以扫描文本框。专家的建议和原因。
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;
}
提前致谢。
答案 0 :(得分:1)
我和你一样新。但是出现的是数据结构。
http://en.wikipedia.org/wiki/Trie
如果您有子网,可能会有所帮助。但您可能需要找到任何实现[How to create a trie in c# [http://geekyisawesome.blogspot.com/2010/07/c-trie.html]。我不确定网络工具中实际使用的是什么。
答案 1 :(得分:1)
您应该使用List。可以轻松添加/删除项目。
收藏品更先进。在覆盖AddItem
和RemoveItem
时,他们可以执行其他操作。
数组的长度是静态的,必须在需要延长时重新创建。
答案 2 :(得分:1)
首先,List
是Collection
。
如果您有预定数量的元素,请使用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
,因为前者具有更大的灵活性且易于使用
答案 3 :(得分:1)
我无法从您的代码中获得完美的需求,但我理解得足够多。因此,以下是数组和列表之间的主要比较点。
1)当在编译时知道需要插入到数组中的元素数量时,使用数组,并且在整个程序执行期间它保持固定。 当您不知道需要存储多少元素时,可以使用集合。所以基本上一个集合可以动态增长。用于实现集合的数据结构取决于集合类型。
2)您只能在数组中存储相似类型的元素。当然,除非你声明一个'Object'类型的数组。这意味着,我们可以在单个数组中存储整数,字符串和自定义对象。 在集合中,您可以存储任何类型的元素,前提是它们都是对象。您可以将基本数据类型存储在数组中。您只能将对象存储在集合中。
我建议根据你的需要,你应该去列表而不是数组。