我不明白为什么这个循环不迭代
本文关键字:循环 迭代 为什么 明白 | 更新日期: 2023-09-27 18:13:32
不知道我在这里做错了什么。我是新的c#和我试图转换VB。Net代码从一个在线教程。我不能让这个For循环迭代:
if (Screens.Count > 0)
{
for (int i = Screens.Count - 1; i == 0; --i)
{
if (Screens[i].GrabFocus==true)
{
Screens[i].Focused = true;
DebugScreen.FocusScreen = "Focused Screen: " + Screens[i].Name;
break;
}
}
}
列表中有2个屏幕。第二个屏幕(屏幕[1])将GrabFocus设置为true。在调试期间,执行从第3行(for…)跳转到最后一个结束大括号。嵌套的"If"语句永远不会执行。此外,我认为break语句是错误的,因为我实际上试图结束"For"循环。
您没有正确编写for
循环。您应该将其替换为以下内容:
for (int i = Screens.Count - 1; i >=0; --i)
从值Screens.Count - 1
开始,每一步减少1 i
,直到i
等于零。然后你停下来。
for (initializer; condition; iterator)
body
- 初始化器部分设置初始条件。本节中的语句在进入循环之前只运行一次。section只能包含以下两个选项中的一个:
- 条件部分包含一个布尔表达式,该表达式被计算以确定循环是应该退出还是应该重新运行。
- 迭代器部分定义了循环体每次迭代后发生的事情。迭代器部分包含以下0个或多个语句表达式,以逗号 分隔
- 循环体由一条语句、一个空语句或一个语句块组成,您可以通过在大括号中包含零条或多条语句来创建。
关于这方面的更多信息,请点击这里。
你的箱子有什么问题?
第二个子弹头。条件i==0
在开始时为假。因此循环根本不会被执行。
i == 0
应该是i >= 0
。
for (int i = Screens.Count - 1; i >= 0; --i)
i == 0
应替换为i >= 0
for (int i = Screens.Count - 1; i >=0; --i)
您的for loop
不正确。下面是代码
if (Screens.Count > 0)
{
for (int i = Screens.Count - 1; i >= 0; --i)
{
if (Screens[i].GrabFocus==true)
{
Screens[i].Focused = true;
DebugScreen.FocusScreen = "Focused Screen: " + Screens[i].Name;
break;
}
}
}