如何在C#中编写Do .. While循环?
(编辑:我是一名VB.NET程序员,试图转向C#,所以我确实有.NET / VB语法的经验。谢谢!)
一般形式是:
do
{
// Body
} while (condition);
其中condition
是bool
类型的一些表达。
我个人很少写do / while循环 - for
,foreach
和直接while
循环在我的经验中更常见。后者是:
while (condition)
{
// body
}
while
和do...while
之间的区别在于,在第一种情况下,如果条件为假开始,则永远不会执行正文 - 而在后一种情况下,它总是在条件被评估之前执行一次。
既然你提到你来自VB.NET,我强烈建议你查看this link以显示比较。您也可以使用this wensite将VB转换为C#,反之亦然 - 这样您就可以使用现有的VB代码,看看它在C#中的样子,包括循环和儿子下面的任何其他内容。
要回答循环问题,您只需要执行以下操作:
while(condition)
{
DoSomething();
}
你也可以这样做 - 虽然这样:
do
{
Something();
}
while(condition);
这是我成功使用的another code translator和another great C#->VB comparison website。祝好运!
//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);
非常令人惊讶的是,还没有人提到过do..while构造的经典例子。当你想要运行一些代码,检查或验证某些东西时(通常取决于执行该代码期间发生的事情),并且如果你不喜欢结果,请重新开始。当您想要一些符合某些约束条件的用户输入时,这正是您所需要的:
bool CheckInput(string input) { ... }
...
string input;
...
do {
input=Console.ReadLine();
} while(!CheckInput(input));
这是一个非常通用的形式:当条件足够简单时,通常将它直接放在循环结构上(在“while”关键字后面的括号内),而不是有一个计算它的方法。
这种用法的关键概念是你必须至少要求用户输入一次(在最好的情况下,用户将在第一次尝试时得到它);并且在身体至少执行一次之前,条件并没有多大意义。这些都是很好的提示,虽然这是工作的工具,但它们在一起几乎是一种保证。
这是一个打印一些数字的简单示例:
int i = 0;
do {
Console.WriteLine(++i);
} while (i < 10);
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++;
}
}
}
Jon Skeet的回答是正确和伟大的,尽管我想为那些不熟悉caz中的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循环。
除了Anthony Pegram的回答之外,你还可以使用while循环,它在进入循环之前检查条件
while (someCriteria)
{
if (someCondition)
{
someCriteria = false;
// or you can use break;
}
if (ignoreJustThisIteration)
{
continue;
}
}