Do / While和While / Do之间的区别

时间:2013-11-27 00:44:22

标签: c# winforms do-while

我正在尝试学习C#,我想接受我编写的代码,看看我是否可以更改它并使用do / while和while / do。我一整天都搞乱了这一点,我很难抓住do / while和while / do由于某种原因。如果有人能告诉我这将是多么伟大。此外,如果您这样做或可以,请解释一下。试着学习,但我很困惑。

private void calculate_Click(object sender, EventArgs e)
{
    int answer = 0;
    //int i = int.Parse(textBox1.Text);
    int j = int.Parse(textBox2.Text);
    int multiplyBy = int.Parse(multiplier.Text);

    for (int i = int.Parse(textBox3.Text); i <= j; i++)
    {
        //answer = answer + i;
        //listBox1.Items.Add(answer.ToString());
        answer = multiplyBy * i;
        listBox1.Items.Add(i + " times" + multiplyBy + " = " + answer.ToString());
    }
}

3 个答案:

答案 0 :(得分:8)

  • while ( condition ) { LoopBody() }执行LoopBody()零次或多次。

    检查 condition 之前执行循环体:只要conditiontrue,就会执行循环体。

  • do { LoopBody() } while ( condition )执行LoopBody()一次或多次。

    执行循环体之后

    condition被检查完全相当于

    LoopBody() ;
    while ( condition )
    {
      LoopBody() ;
    }
    

应该注意的是,如果循环体不会改变条件,那么循环永远不会终止。

编辑注意:for适用于所有意图和目的。您的for循环:

for (int i = int.Parse(textBox3.Text); i <= j; i++)
{
  LoopBody() ;
}

大致相当于:

int i = int.Parse(textBox3.Text) ;
while ( i <= j )
{
  LoopBody() ;
  i++ ;
}

“粗略的一点是因为循环索引器的作用域是for循环,就像它被写入一样

{//引入范围       int i = int.Parse(textBox3.Text);       而(i <= j)       {         LoopBody();         i ++;       }     } //范围结束

这与for循环并不完全相同,因为如果你在方法中引入一个新的i,你会得到一个关于重复变量名的编译器。 for - 循环没有这个问题。编译器非常满意这样的事情:

if ( condition-A )
{
  for ( int i = 0 ; i < 10 ; ++i )
  {
     DoSomethingUseful(i) ;
  }
}
else
{
  for ( int i = 0 ; i < 10 ; ++i )
  {
     DoSomethingElseUseful(i) ;
  }
}

而这样的事情会导致编译器发牢骚:

if ( condition-A )
{
  int i = 0 ;
  while ( i < 10 )
  {
     DoSomethingUseful(i) ;
     ++i ;
  }
}
else
{
  int i = 0 ;
  while ( i < 10 )
  {
     DoSomethingElseUseful(i) ;
     ++i ;
  }
}

希望这有帮助。

重构代码以使用while循环会给你这样的东西:

private void calculate_Click(object sender, EventArgs e)
{
  int i          = int.Parse( textBox3.Text   ) ;
  int j          = int.Parse( textBox2.Text   ) ;
  int multiplyBy = int.Parse( multiplier.Text ) ;

  while ( i <= j )
  {
    int    answer = multiplyBy * i ;
    string value  = string.Format( "{0} times {1} = {2}" , i , mulitplyBy , answer ) ;

    listBox1.Items.Add( value ) ;

    ++i ;
  }

  return ;
}

答案 1 :(得分:0)

do/while的一般形式如下:

do
{
   // Perform some actions here.
} while (some condition);  // Break out of the loop once this condition is satisfied.  

'某些条件'属于bool类型。 do/whilewhile之间的主要区别在于,如果在do循环开始时'some condition'为false,则循环体将不会被执行

do/while循环的基本点是旋转循环执行某些操作或操作,然后在满足while条件后突破循环。作为参考,您可以从MSDN中看到一个非常简单的示例here。在大多数情况下,随着您获得更多经验,您可能会发现自己在do / while变种上使用forforeachwhile循环。

答案 2 :(得分:0)

当你的循环体必须至少执行一次时使用do/while,否则,使用while