我不明白为什么这个循环不迭代

本文关键字:循环 迭代 为什么 明白 | 更新日期: 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;
            }
         }
      }