C#foreach在2个值之间循环

Ger*_*202 2 c# int foreach 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 
}
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*ean 9

不,foreach用于迭代集合.你想要的是for循环.

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

for(var i = port1; i <= port2; i++)
{
  //do something 
}
Run Code Online (Sandbox Code Playgroud)


The*_*uin 5

AlexD的答案是正确的,但不幸的是滥用的第二个参数Enumerable.Range。第二个参数是count,不是范围的界限。

它应显示为:

Enumerable.Range(port1, (port2 - port1) + 1)
Run Code Online (Sandbox Code Playgroud)

或者,如果您不知道端口1小于端口2:

Enumerable.Range(Math.Min(port1, port2), Math.Abs(port2 - port1) + 1)
Run Code Online (Sandbox Code Playgroud)