【问题标题】:How to go to the next value of a While loop如何转到 While 循环的下一个值
【发布时间】:2013-02-04 12:48:53
【问题描述】:

我有一个While loop,它读取linefile.txt。我还有一个名为VerifyPhoto 的方法,它返回true/false 如果返回值为false,我想转到while loop 的下一项。我怎么能这样做?我尝试了breakreturn,但它只是把所有东西都留给form...

while (!reader.EndOfStream)
  {
     if(VerifyPhoto(filed.matriculation) == false)
        {
          //go to the next line of the file.txt
        }
  }

【问题讨论】:

  • break 离开当前循环,return 完全离开方法,continue 跳过当前迭代并转到下一个。我猜你在找continue
  • 只是想我现在提一下,因为breakreturncontinue 都与此相关:goto。所有这些关键字都是所谓的跳转。但是,goto 是旧的并且被认为是不好的做法,因为使用 goto 的代码很难遵循。前面的 3 个关键字基本上都是goto,但至少它们更容易理解。顺便提一句。我仍然记得有一次我不得不使用一种没有实现任何这些的语言,所以我不得不处理bools。实现起来很恐怖,调试起来也很恐怖......
  • 我记得我和C一起工作的时候goto哈哈!我的教授称之为Spaghetti programming'-'。真的谢谢,我不知道jumps之间的区别

标签: c# winforms visual-studio-2010


【解决方案1】:

您可能想熟悉其他控制语句:continue

[编辑] 文档的最新版本:continue,感谢 Jeppe。

【讨论】:

  • 它会忽略while内的所有其余部分并进入下一个迭代?
  • @Ghaleon 是的,它会的,就像给出的例子一样。 :) 当你使用continue 时,它会继续进行下一次迭代,就像break 跳出循环一样。
【解决方案2】:

continue;(多一些使它变成 30 个字符)

【讨论】:

    【解决方案3】:

    根据您的实际代码,也许您可​​以简单地反转布尔测试,因此只有在 VerifyPhoto 返回 true 时才做某事:

    while (...)
    {
        if(VerifyPhoto(filed.matriculation))
        {
            // Do the job
        }
    }
    

    【讨论】:

    • 但我要验证的一件事是CheckedListBox 上是否有项目我会做这项工作,但我有这些其他测试;s 谢谢!
    【解决方案4】:

    continue 语句将控制权传递给它所在的封闭迭代语句的下一次迭代

    while (!reader.EndOfStream)
    {
        if(VerifyPhoto(filed.matriculation) == false)
        {
            continue;
            //go to the next line of the file.txt
        }
    }
    

    【讨论】:

      【解决方案5】:

      我是否在您执行此操作时遗漏了什么? 您在开始循环之前阅读了第一行吗? 如果是这样,您不需要类似的东西

      **string line;**
      while (!reader.EndOfStream)
        {
           if(VerifyPhoto(filed.matriculation) == false)
              {
                //go to the next line of the file.txt
                **line = file.ReadLine();**
              }
        }
      

      【讨论】:

        【解决方案6】:

        如果您尝试逐行阅读,那么File.ReadLines 可能会有用。

        您正在寻找的还有continue 声明。

        string myFile = @"c:\path\to\my\file.txt";
        
        foreach(string line in File.ReadLines(myFile))
        {
            //Do stuff
            //if(!VerifyPhoto())
            //    continue;
            //Do other logic
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-12
          • 2012-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-02
          相关资源
          最近更新 更多