使用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
}
优点
缺点
场景B - 执行/循环
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
}
优点
缺点
答案 0 :(得分:10)
为了完整起见,您还可以使用选项D:
for (int iLoop = 0; Criteria; iLoop++)
{
// work here
}
(其中Criteria
是“继续运行”)
for
循环中的条件不必涉及iLoop
。但是,不寻常,但非常可爱 - 只会在之前评估。
答案 1 :(得分:9)
两全其美:
for (int iLoop = 0; iLoop < int.MaxValue && !Criteria; iLoop++)
编辑:现在我考虑一下,我想与int.MaxValue进行比较不是标准的一部分,而是模仿无限循环的东西,在这种情况下你可以使用:
for (int iLoop = 0; !Criterea; iLoop++)
答案 2 :(得分:3)
for (int iLoop = 0; iLoop < int.MaxValue && !Criteria; iLoop++) {
//Do work here...
}
答案 3 :(得分:3)
您可以使用要用于循环的实际条件,而不是for循环中的虚拟条件:
场景A2 - 包含自定义条件的for循环:
for (int iLoop = 0; Criteria; iLoop++) {
// do work here
}
这相当于:
{
int iLoop = 0;
while (Criteria) {
// do work here
iLoop++;
}
}
如果你有一个循环计数器,你通常应该使用for循环来使它更清晰。
答案 4 :(得分:1)
我通常使用它,因为它很简单。我在循环之前或之前需要计数器时使用,或者如果不能使用,则使用。
答案 5 :(得分:1)
您始终可以将退出条件添加到for循环:
for (int iLoop = 0; iLoop < int.MaxValue && Criteria; iLoop++)
{
//Maybe do work here
}
我真的会选择在您的特定情况下最具可读性的内容。
答案 6 :(得分:1)
在这种情况下,没有理由不使用for
循环。即使你有其他标准,写下来也是完全有效的:
for (int iLoop = 0; iLoop < int.MaxValue && Criteria; iLoop++) { ... }
答案 7 :(得分:1)
我个人会选择 for循环。
最好是阅读,更常用和非常优化。
for (int iLoop = 0; iLoop < int.MaxValue && !Criteria; iLoop++)
{
// Do Work
}
编辑:int.MaxValue&amp;&amp; !标准&lt; - 比我最初的方法更好的方法;)
答案 8 :(得分:1)
for循环由以下内容组成:
for ( initialization; condition; action )
如果要检查您的标准,您不需要额外的费用,您认为i < value
是什么?它只不过是一个标准。
我在使用循环时遇到问题,没有明确的答案
答案 9 :(得分:1)
编写一些测试用例,看看哪种方法最适合您。看一下这个链接:.Net/C# Loop Performance Test (FOR, FOREACH, LINQ, & Lambda)
答案 10 :(得分:1)
如果我实际上在循环中使用计数器,比如作为数组的索引,并且作为条件的一部分,即“停在数组的末尾”,我倾向于使用for
“而不是”只是不要溢出“。
如果我正在循环某个长度未知的内容,例如文件中的行,或者只是让计数器在循环后使用总计,那么我将使用do
或while
然而,它实际上归结为对于特定情况更具可读性。我希望你很难从已编译的IL中告诉我使用了哪个版本。
答案 11 :(得分:1)
for循环可以执行固定或给定次数的代码块。如果你的计数器变量依赖于那个代码块(意味着在循环条件内),你可以使用for循环
答案 12 :(得分:0)
至少对我来说,当我需要遍历数组并且不需要中断时,我会使用for()。当我需要处理未知时间的某些事情时,请执行()和while()。