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)
有关如何做到这一点的任何建议?
不,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)
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)