C# 循环详解

C# 中的循环(Loop)用于重复执行一段代码,常见的循环有 for、while、do...while、foreach 四种。


1. for 循环

适用于已知循环次数的情况。

语法

cs 复制代码
for (初始化; 条件表达式; 迭代器)
{
    // 循环体
}

示例

cs 复制代码
for (int i = 1; i <= 5; i++)
{
    Console.WriteLine(i);
}

输出:

复制代码
1
2
3
4
5

执行过程:

复制代码
i=1 → 输出1
i=2 → 输出2
i=3 → 输出3
i=4 → 输出4
i=5 → 输出5
i=6 → 条件不成立,结束

for 倒序循环

cs 复制代码
for (int i = 10; i >= 1; i--)
{
    Console.WriteLine(i);
}

输出:

复制代码
10
9
8
...
1

for 多变量

cs 复制代码
for (int i = 0, j = 10; i < j; i++, j--)
{
    Console.WriteLine($"i={i},j={j}");
}

2. while 循环

适用于不知道具体循环次数,只知道结束条件。

语法

cs 复制代码
while (条件)
{
    // 循环体
}

示例

cs 复制代码
int i = 1;

while (i <= 5)
{
    Console.WriteLine(i);
    i++;
}

输出:

复制代码
1
2
3
4
5

无限循环

cs 复制代码
while (true)
{
    Console.WriteLine("运行中...");
}

通常配合 break:

cs 复制代码
while (true)
{
    string input = Console.ReadLine();

    if (input == "exit")
    {
        break;
    }

    Console.WriteLine(input);
}

3. do...while 循环

特点:

至少执行一次。

语法

cs 复制代码
do
{
    // 循环体
}
while (条件);

示例

cs 复制代码
int i = 1;

do
{
    Console.WriteLine(i);
    i++;
}
while (i <= 5);

与 while 的区别

while

cs 复制代码
int i = 10;

while (i < 5)
{
    Console.WriteLine(i);
}

输出:

复制代码
无输出

do...while

cs 复制代码
int i = 10;

do
{
    Console.WriteLine(i);
}
while (i < 5);

输出:

复制代码
10

因为先执行后判断。


4. foreach 循环

专门用于遍历数组、集合。

遍历数组

cs 复制代码
string[] names =
{
    "张三",
    "李四",
    "王五"
};

foreach (string name in names)
{
    Console.WriteLine(name);
}

输出:

复制代码
张三
李四
王五

遍历 List

cs 复制代码
List<int> nums = new List<int>()
{
    10,20,30,40
};

foreach (int num in nums)
{
    Console.WriteLine(num);
}

foreach 特点

优点:

  • 代码简洁
  • 不需要下标
  • 不容易越界

缺点:

  • 无法直接修改元素
  • 无法获得索引(需额外处理)

break 语句

用于立即结束循环。

cs 复制代码
for (int i = 1; i <= 10; i++)
{
    if (i == 5)
    {
        break;
    }

    Console.WriteLine(i);
}

输出:

复制代码
1
2
3
4

continue 语句

跳过本次循环。

cs 复制代码
for (int i = 1; i <= 5; i++)
{
    if (i == 3)
    {
        continue;
    }

    Console.WriteLine(i);
}

输出:

复制代码
1
2
4
5

嵌套循环

循环中再套循环。

九九乘法表

cs 复制代码
for (int i = 1; i <= 9; i++)
{
    for (int j = 1; j <= i; j++)
    {
        Console.Write($"{j}×{i}={i*j}\t");
    }

    Console.WriteLine();
}

输出:

复制代码
1×1=1

1×2=2  2×2=4

1×3=3  2×3=6  3×3=9

...

实战案例

求1~100的和

cs 复制代码
int sum = 0;

for (int i = 1; i <= 100; i++)
{
    sum += i;
}

Console.WriteLine(sum);

结果:

复制代码
5050

求偶数和

cs 复制代码
int sum = 0;

for (int i = 2; i <= 100; i += 2)
{
    sum += i;
}

Console.WriteLine(sum);

猜数字游戏

cs 复制代码
Random random = new Random();

int target = random.Next(1, 101);

while (true)
{
    Console.Write("请输入数字:");

    int num = Convert.ToInt32(Console.ReadLine());

    if (num > target)
    {
        Console.WriteLine("大了");
    }
    else if (num < target)
    {
        Console.WriteLine("小了");
    }
    else
    {
        Console.WriteLine("猜对了");
        break;
    }
}

四种循环对比

循环 使用场景 是否先判断
for 已知次数
while 未知次数
do...while 至少执行一次
foreach 遍历集合

选择建议

复制代码
已知循环次数      → for
未知循环次数      → while
至少执行一次      → do...while
遍历数组/集合     → foreach

在实际开发中,使用频率通常是:

复制代码
for > foreach > while > do...while

其中 foreach 在遍历数组、List<T>、字典等集合时最常用,而 for 在需要索引操作或修改元素时更合适。