做..在C#中循环?

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

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

一般forms是:

 do { // Body } while (condition); 

conditionbool类型的某种表达。

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

 while (condition) { // body } 

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

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

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

 while(condition) { DoSomething(); } 

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

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

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

 //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构造的经典例子。 当你想要运行一些代码,检查或validation某些东西时(通常取决于执行该代码期间发生的事情),并且如果你不喜欢结果,请重新开始。 当您想要一些符合某些约束条件的用户输入时,这正是您所需要的:

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

这是一个非常通用的forms:当条件足够简单时,通常将它直接放在循环结构上(在“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++; } } } 

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

 while (someCriteria) { if (someCondition) { someCriteria = false; // or you can use break; } if (ignoreJustThisIteration) { continue; } } 

Jon Skeet的答案是正确和伟大的,尽管我想为那些不熟悉的人do-while一个例子, do-while在c#中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循环。