我有几个具有整数序列的类,这些序列在另一个类中注册,该类检查序列中的数字是否尚未使用。
序列是最连续的,从一个数字到另一个。
现在我一直在使用一个简单的列表,这意味着如果一个序列表示从 5000 到 15000,那么列表中将有 10000 个元素。我想用更合适的东西来代替它,它可以在一个简单的元素中代表范围。
在我的特定情况下,我还希望这些范围代表一个对象(序列源自的类),这样当我查找一个数字时,我就可以访问它的来源,而不是查看每个类来查看它们是否存在包含我正在寻找的号码。
这是我的伪代码和我期望的结果:
/* int is the integer type, while string is the "tag" object */
var animals = new IntRangeArray<int, string>();
animals.Add(1, "dog");
// [0] begin: 1, end: 1, object: "dog"
animals.Add(2, "dog");
// [0] begin: 1, end: 2, object: "dog"
/* AddRange with C#7.0 ValueTuple */
animals.AddRange((4,14), "dog");
// [0] begin: 1, end: 2, object: "dog"
// [1] begin: 4, end: 14, object: "dog"
animals.Add(3, "dog");
// [0] begin: 1, end: …Run Code Online (Sandbox Code Playgroud) 在 UPnP IGD 中,有 2 个服务“WANPPPConnection”(或 WanIPConnection)和 WANIPv6FirewallControl,其方法看起来相似:
两者都采用类似的参数(远程/内部主机/端口、协议、租用时间)。
我想知道,它们之间有什么区别?FW 控制显然是 IPv6 独有的,而 PortMapping 似乎允许 v4 和 v6,那么真正的区别是什么?有不同的行为吗?