我从未见过的C#迭代

c#

我正在 HackerRank 上练习编码,但我遇到了其中一个问题。我看着其他人如何处理它,并遇到了我以前从未见过的东西。

public static int jumpingOnClouds(List<int> c)
{
        int count = 0;

        for (int i = 0; i < c.Count - 1; i++) 
        {
            if (c[i] == 0) 
                 i++;

            count++;
        }
        
        return count;
}

这个迭代应该通过一个整数数组。如果整数是 0,它需要一个步骤,如果它是 1,它什么都不做。在“if”语句中,它是:

    if (c[i] == 0) 
        i++;
    count++;
    

这段代码有效。但是我尝试像这样重写它:

if (c[i] == 0) 
{
    i++;
    count++;
}

但它不像以前的代码那样工作。有人可以帮忙解释一下这个人做了什么,因为我不知道去哪里看或者这叫什么?

回答

如果if, while,for没有括号{ },它将运行第一行,然后存在于语句之外。

这个:

if (c[i] == 0) 
    i++;
count++;

其实是这个意思:

if (c[i] == 0) 
{
    i++;
}

count++;

没有括号的语句称为嵌入式语句。它与新创建的 if 语句作用域几乎相同,但存在差异。

  • 只运行它到达的第一行/功能。
  • 您不能在 Embedded 语句中定义变量。
  • 没有创建新的作用域。

以上是我从未见过的C#迭代的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>