使用哪个循环,for或do / while?
使用C#(或VB.NET)当需要计数器时,应该使用哪个循环(for循环或do / while循环)?
如果循环只应迭代一定次数或通过设定范围,它会有所不同吗?
场景A – for循环
for (int iLoop = 0; iLoop < int.MaxValue; iLoop++) { //Maybe do work here //Test criteria if (Criteria) { //Exit the loop break; } //Maybe do work here }
好处
- 计数器被声明为循环的一部分
- 易于实现计数器范围
缺点
- 必须使用if离开循环
场景B – do / while循环
int iLoop = 0; do { //Increment the counter iLoop++; //Do work here } while (Criteria);
要么
int iLoop = 0; while (Criteria) { //Increment the counter iLoop++; //Do work here }
好处
- 离开循环是循环结构的一部分
- 选择在循环块之前或之后进行评估
缺点
- 必须手动管理计数器
为了完整起见,您还可以使用选项D:
for (int iLoop = 0; Criteria; iLoop++) { // work here }
( Criteria
是“继续运行”)
for
循环中的条件不必涉及iLoop
。 虽然不寻常,但非常可爱 – 只是在工作之前评估。
两个世界中最好的:
for (int iLoop = 0; iLoop < int.MaxValue && !Criteria; iLoop++)
编辑:现在我考虑一下,我想与int.MaxValue进行比较不是标准的一部分,而是模仿无限循环的东西,在这种情况下你可以使用:
for (int iLoop = 0; !Criterea; iLoop++)
for (int iLoop = 0; iLoop < int.MaxValue && !Criteria; iLoop++) { //Do work here... }
您可以使用要用于循环的实际条件,而不是for循环中的伪条件:
场景A2 – 具有自定义条件的for循环:
for (int iLoop = 0; Criteria; iLoop++) { // do work here }
这相当于:
{ int iLoop = 0; while (Criteria) { // do work here iLoop++; } }
如果你有一个循环计数器,你通常应该使用for循环来使它更清晰。
我通常使用它,因为它很简单。 我在循环之前或之前需要计数器时使用,或者如果不能使用则。
您始终可以将退出条件添加到for循环:
for (int iLoop = 0; iLoop < int.MaxValue && Criteria; iLoop++) { //Maybe do work here }
我真的会选择在你的特定情况下看起来最具可读性的东西。
在这种情况下,没有理由不使用for
循环。 即使你有其他标准,写下来也是完全有效的:
for (int iLoop = 0; iLoop < int.MaxValue && Criteria; iLoop++) { ... }
for循环包括以下内容:
for ( initialization; condition; action )
如果检查你的标准,你不需要额外的,你认为i < value
? 它只不过是一个标准。
我在适合问题时使用循环,没有明确的答案
写一些测试用例,看哪哪个最适合你。 看看这个链接: .Net / C#循环性能测试(FOR,FOREACH,LINQ和Lambda)
就个人而言,我会选择for循环 。
最好阅读,更常用和非常优化。
for (int iLoop = 0; iLoop < int.MaxValue && !Criteria; iLoop++) { // Do Work }
编辑:int.MaxValue &&!Criteria < - 比我最初的方法更好的方法;)
我倾向于使用for
如果我实际上在循环中使用计数器,比如作为数组的索引,并作为标准的一部分,即“停在数组的末尾”而不是“只是不要” t溢出“。
如果我循环一个长度未知的东西,比如文件中的行,或者只是保持计数器在循环后使用总计,那么我将使用do
或while
。
然而,它实际上归结为对于特定情况更具可读性。 我希望你很难从编译的IL中告诉我使用了哪个版本。
((((差异b / w而且同时 – >让我告诉你一个例子:如果一个人进入大厅在大厅内修理炸弹,他必须在进入时检查..在另一个案例中如果一个人进入大厅从那里偷东西,他必须在走出大厅时进行检查..所以基于这个过程只有我们必须使用我们的循环条件….))))
for循环可以执行固定或给定次数的代码块。如果你的计数器变量依赖于那个代码块(意味着在循环条件内),你可以使用for循环
至少对我来说,当我需要遍历数组并且不需要中断时,我会使用for()。 并且do()和while()当我需要处理未知时间的东西时。