做..在C#中循环?

问题描述 投票:23回答:8

如何在C#中编写Do .. While循环?

(编辑:我是一名VB.NET程序员,试图转向C#,所以我确实有.NET / VB语法的经验。谢谢!)

c# loops do-while
8个回答
47
投票

一般形式是:

do
{
   // Body
} while (condition);

其中conditionbool类型的一些表达。

我个人很少写do / while循环 - forforeach和直接while循环在我的经验中更常见。后者是:

while (condition)
{
    // body
}

whiledo...while之间的区别在于,在第一种情况下,如果条件为假开始,则永远不会执行正文 - 而在后一种情况下,它总是在条件被评估之前执行一次。


7
投票

既然你提到你来自VB.NET,我强烈建议你查看this link以显示比较。您也可以使用this wensite将VB转换为C#,反之亦然 - 这样您就可以使用现有的VB代码,看看它在C#中的样子,包括循环和儿子下面的任何其他内容。

要回答循环问题,您只需要执行以下操作:

while(condition)
{
   DoSomething();
}

你也可以这样做 - 虽然这样:

do
{
   Something();
}
while(condition);

这是我成功使用的another code translatoranother great C#->VB comparison website。祝好运!


6
投票
//remember, do loop will always execute at least once, a while loop may not execute at all
//because the condition is at the top
do
{
  //statements to be repeated
} while (condition);

2
投票

非常令人惊讶的是,还没有人提到过do..while构造的经典例子。当你想要运行一些代码,检查或验证某些东西时(通常取决于执行该代码期间发生的事情),并且如果你不喜欢结果,请重新开始。当您想要一些符合某些约束条件的用户输入时,这正是您所需要的:

bool CheckInput(string input) { ... }
...
string input;
...
do {
  input=Console.ReadLine();
} while(!CheckInput(input));

这是一个非常通用的形式:当条件足够简单时,通常将它直接放在循环结构上(在“while”关键字后面的括号内),而不是有一个计算它的方法。

这种用法的关键概念是你必须至少要求用户输入一次(在最好的情况下,用户将在第一次尝试时得到它);并且在身体至少执行一次之前,条件并没有多大意义。这些都是很好的提示,虽然这是工作的工具,但它们在一起几乎是一种保证。


1
投票

这是一个打印一些数字的简单示例:

int i = 0;

do {
  Console.WriteLine(++i);
} while (i < 10);

1
投票
using System;

class MainClass
{
    public static void Main()
    {
        int i = 0;
        do
        {
            Console.WriteLine("Number is {0}", i);
            i++;
        } while (i < 100);
    }
}

另一种方法是

using System;

class MainClass
{
    public static void Main()
    {
        int i = 0;
        while(i <100)
        {
            Console.WriteLine("Number is {0}", i);
            i++;
        }
    }
}

1
投票

Jon Skeet的回答是正确和伟大的,尽管我想为那些不熟悉caz中的whiledo-while的人举个例子:

int i=0;
while(i<10)
{
    Console.WriteLine("Number is {0}", i);
    i++;
}

和:

int i=0;
do
{
    Console.WriteLine("Number is {0}", i);
    i++;
}while(i<10)

将输出:

Number is 0
Number is 1
Number is 2
Number is 3
Number is 4
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9

正如我们所料。然而,重要的是要理解do-while循环总是在第一次执行主体而不管检查。这意味着如果我们将i的起始值更改为100,我们将看到非常不同的输出。

int i=100;
while(i<10)
{
    Console.WriteLine("Number is {0}", i);
    i++;
}

和:

int i=100;
do
{
    Console.WriteLine("Number is {0}", i);
    i++;
}while(i<10)

现在while循环实际上不生成输出:

但是do-while循环生成了这个:

Number is 100

尽管远远超过10.这是因为do-while循环的独特行为总是运行一次,而不像常规while循环。


0
投票

除了Anthony Pegram的回答之外,你还可以使用while循环,它在进入循环之前检查条件

while (someCriteria)
{
    if (someCondition)
    {
        someCriteria = false;
        // or you can use break;
    }
    if (ignoreJustThisIteration)
    {
        continue;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.