在本文中,我们将学习 C# 中的for
循环以及在程序中使用它们的不同方法。
在编程中,通常需要执行特定次数的语句块。 一种可能的解决方案是键入所需次数的语句。 但是,重复的次数可能事先未知(在编译时),或者可能不够大(例如 10000)。
此类问题的最佳解决方案是循环。 循环在编程中用于重复执行某个语句块,直到满足某些条件为止。
在本文中,我们将介绍 C# 中的for
循环。
C# for
循环
关键字for
用于在 C# 中创建for
循环。for
循环的语法为:
for (initialization; condition; iterator)
{
// body of for loop
}
for
循环如何工作?
- C#
for
循环具有三个语句:initialization
,condition
和iterator
。 - 首先执行
initialization
语句,并且仅执行一次。 在这里,变量通常被声明和初始化。 - 然后,求值
condition
。condition
是布尔表达式,即它返回true
或false
。 如果将
condition
求值为true
:for
循环内的语句将执行。- 然后,执行
iterator
语句,该语句通常会更改初始化变量的值。 - 再次求值
condition
。 - 该过程一直持续到
condition
被求值为false
为止。
- 如果将
condition
求值为false
,则for
循环终止。
for
循环流程图
示例 1:C# for
循环
using System;
namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
for (int i=1; i<=5; i++)
{
Console.WriteLine("C# For Loop: Iteration {0}", i);
}
}
}
}
当我们运行程序时,输出将是:
C# For Loop: Iteration 1
C# For Loop: Iteration 2
C# For Loop: Iteration 3
C# For Loop: Iteration 4
C# For Loop: Iteration 5
在这个程序中
initialization
语句为int i=1
condition
语句为i<=5
iterator
语句为i++
该程序运行时
- 首先,声明变量
i
并将其初始化为 1。 - 然后,求值条件(
i<=5
)。 - 由于条件返回
true
,因此程序将执行for
循环的主体。 它使用迭代 1 打印给定的行(迭代只是表示重复)。 - 现在,求值迭代器(
i++
)。 这会将i
的值增加到 2。 - 再次求值条件(
i<=5
),最后将i
的值加 1。该条件将在前 5 次求值为true
。 - 当
i
的值为 6 并且条件为false
时,循环将终止。
示例 2:计算前 n 个自然数之和的for
循环
using System;
namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
int n = 5,sum = 0;
for (int i=1; i<=n; i++)
{
// sum = sum + i;
sum += i;
}
Console.WriteLine("Sum of first {0} natural numbers = {1}", n, sum);
}
}
}
当我们运行程序时,输出将是:
Sum of first 5 natural numbers = 15
在此,将sum
和n
的值分别初始化为 0 和 5。 迭代变量i
初始化为 1,并在每次迭代时递增。
在for
循环内,sum
的值增加i
即sum = sum + i
的值。for
循环继续进行,直到i
小于或等于n
(用户输入)。
让我们看看给定程序在每次迭代中会发生什么。
最初,i = 1
,sum = 0
,n = 3
for
循环执行步骤
迭代 | i 的值 |
i <= 5 |
sum 的值 |
---|---|---|---|
1 | 1 | true |
0+1 = 1 |
2 | 2 | true |
1+2 = 3 |
3 | 3 | true |
3+3 = 6 |
4 | 4 | true |
6+4 = 10 |
5 | 5 | true |
10+5 = 15 |
6 | 6 | false |
循环终止 |
因此,当n = 5
时,总和的最终值为 15。
for
循环内的多个表达式
我们还可以在for
循环中使用多个表达式。 这意味着我们在for
循环中可以有多个初始化和/或迭代器语句。 让我们看下面的例子。
示例 3:具有多个初始化和迭代器表达式的for
循环
using System;
namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
for (int i=0, j=0; i+j<=5; i++, j++)
{
Console.WriteLine("i = {0} and j = {1}", i,j);
}
}
}
}
当我们运行程序时,输出将是:
i = 0 and j = 0
i = 1 and j = 1
i = 2 and j = 2
在此程序中,我们已声明并初始化了两个变量:初始化语句中的i
和j
。
同样,我们在迭代器部分有两个表达式。 这意味着i
和j
在每次迭代中均增加 1。
没有初始化和迭代器语句的for
循环
初始化,条件和迭代器语句在for
循环中是可选的。 这意味着我们也可以在没有这些语句的情况下运行for
循环。
在这种情况下,for
循环充当while
循环。 让我们看下面的例子。
示例 4:不带初始化和迭代器语句的for
循环
using System;
namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
int i = 1;
for ( ; i<=5; )
{
Console.WriteLine("C# For Loop: Iteration {0}", i);
i++;
}
}
}
}
当我们运行程序时,输出将是:
C# For Loop: Iteration 1
C# For Loop: Iteration 2
C# For Loop: Iteration 3
C# For Loop: Iteration 4
C# For Loop: Iteration 5
在此示例中,我们没有使用初始化和迭代器语句。
变量i
在for
循环上方初始化,并且其值在循环体内递增。 该程序与示例 1 中的程序相同。
同样,条件也是可选语句。 但是,如果我们不使用测试表达式,则for
循环将不会测试任何条件,并且将永远运行(无限循环)。
无限循环
如果for
循环中的条件始终为true
,则for
循环将永远运行。 这称为无限循环。
示例 5:无限循环
using System;
namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
for (int i=1 ; i>0; i++)
{
Console.WriteLine("C# For Loop: Iteration {0}", i);
}
}
}
}
在此,i
初始化为 1,条件为i>0
。 在每次迭代中,我们将i
的值增加 1,因此条件永远不会是false
。 这将导致循环无限执行。
我们也可以通过将条件替换为空白来创建无限循环。 例如,
for ( ; ; )
{
// body of for loop
}
要么
for (initialization ; ; iterator)
{
// body of for loop
}