26

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

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

4

8 回答 8

51

一般形式为:

do
{
   // Body
} while (condition);

conditiontype 的一些表达式在哪里bool

就我个人而言,我很少写 do/while 循环 - forforeach而在我的经验中,直while循环更为常见。后者是:

while (condition)
{
    // body
}

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

于 2010-03-29T15:17:48.840 回答
8

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

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

while(condition)
{
   DoSomething();
}

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

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

这是我成功使用的另一个代码翻译器,以及另一个很棒的 C#->VB 比较网站。祝你好运!

于 2010-03-29T15:40:49.073 回答
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);
于 2010-03-29T15:14:30.557 回答
2

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

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

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

此用法中的关键概念是您必须至少请求用户输入一次(在最好的情况下,用户将在第一次尝试时就正确);并且在身体至少执行一次之前,这种情况并没有多大意义。这些中的每一个都是很好的提示......虽然是工作的工具,但它们两者几乎都是保证。

于 2010-03-29T15:36:40.300 回答
1

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

int i = 0;

do {
  Console.WriteLine(++i);
} while (i < 10);
于 2010-03-29T15:17:18.343 回答
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++;
        }
    }
}
于 2010-03-29T15:18:18.313 回答
1

Jon Skeet 的回答是正确的,很好,虽然我想给那些不熟悉c#while的人举个例子:do-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 循环不同。

于 2018-09-16T05:35:10.757 回答
0

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

while (someCriteria)
{
    if (someCondition)
    {
        someCriteria = false;
        // or you can use break;
    }
    if (ignoreJustThisIteration)
    {
        continue;
    }
}
于 2010-03-29T15:18:35.990 回答