如何使用foreach
语句在用户给出的2个值之间循环?
我正在创建一个扫描端口的应用程序,所以我希望用户指定要搜索的端口;这里有一些不起作用的示例代码,但应该可以帮助您理解我在寻找的内容:
int port1 = Int32.Parse(TextBox1.Text);
int port2 = Int32.Parse(TextBox2.Text);
foreach(int between port1 and port2)
{
//do something
}
有关如何做到这一点的任何建议?
答案 0 :(得分:9)
不,foreach用于迭代集合。你想要的是for循环。
int port1 = Int32.Parse(TextBox1.Text);
int port2 = Int32.Parse(TextBox2.Text);
for(var i = port1; i <= port2; i++)
{
//do something
}
答案 1 :(得分:3)
AlexD的回答是正确的,但不幸的是误用了Enumerable.Range
的第二个参数。第二个参数是count
,而不是范围的界限。
应该是:
Enumerable.Range(port1, (port2 - port1) + 1)
或者如果您不知道port1是否小于port2:
Enumerable.Range(Math.Min(port1, port2), Math.Abs(port2 - port1) + 1)