C#foreach在2个值之间循环

时间:2014-08-01 00:32:15

标签: c# foreach int port visual-c#-express-2010

如何使用foreach语句在用户给出的2个值之间循环?

我正在创建一个扫描端口的应用程序,所以我希望用户指定要搜索的端口;这里有一些不起作用的示例代码,但应该可以帮助您理解我在寻找的内容:

int port1 = Int32.Parse(TextBox1.Text);
int port2 = Int32.Parse(TextBox2.Text);

foreach(int between port1 and port2)
{
  //do something 
}

有关如何做到这一点的任何建议?

2 个答案:

答案 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)