做..在C#中循环?
如何在C#中编写Do .. While循环?
(编辑:我是一名VB.NET程序员,试图转向C#,所以我确实有.NET / VB语法的经验。谢谢!)
一般forms是:
do { // Body } while (condition);
condition
是bool
类型的某种表达。
就个人而言,我很少写do / while循环 – for
, foreach
和while
循环在我的经验中更常见。 后者是:
while (condition) { // body }
while
和do...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循环。