首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# for 迴圈完整指南:語法結構、巢狀迴圈、跳轉控制與實戰範例

     編輯:關於C#

語法結構


for (initializer; condition; iterator)
    statement;

// 三區塊皆可選
for (;;) { } // 無限迴圈
  • initializer:宣告/初始化迴圈變數 (可多個,逗號分隔)
  • condition:bool 運算式,true 繼續,false 結束
  • iterator:每次迴圈結束執行,通常更新迴圈變數

執行順序

  1. 執行 initializer (一次)
  2. 評估 condition:false → 結束;true → 執行 statement
  3. 執行 statement
  4. 執行 iterator
  5. 回到步驟 2

基礎範例


// 0 到 9
for (int i = 0; i < 10; i++) Console.WriteLine(i);

// 多變數
for (int i = 0, j = 10; i < j; i++, j--) Console.WriteLine($"{i},{j}");

// 字串遍歷
for (int i = 0; i < s.Length; i++) Console.Write(s[i]);

巢狀迴圈:楊輝三角


int rows = 5;
int[,] triangle = new int[rows, rows];

for (int i = 0; i < rows; i++)
{
    triangle[i, 0] = 1;
    triangle[i, i] = 1;
    for (int j = 1; j < i; j++)
    {
        triangle[i, j] = triangle[i-1, j-1] + triangle[i-1, j];
    }
}

for (int i = 0; i < rows; i++)
{
    for (int j = 0; j <= i; j++)
        Console.Write(triangle[i, j] + " ");
    Console.WriteLine();
}
// 輸出:
// 1
// 1 1
// 1 2 1
// 1 3 3 1
// 1 4 6 4 1

階乘計算


long Factorial(int n)
{
    long result = 1;
    for (int i = 2; i <= n; i++)
        result *= i;
    return result;
}

// 反向迴圈
for (int i = n; i > 0; i--) result *= i;

break / continue 控制流


// 列印 0-9 除 7 外
for (int i = 0; i < 10; i++)
{
    if (i == 7) continue; // 跳過 7
    Console.WriteLine(i);
}

// 尋找第一個偶數
for (int i = 0; i < 100; i++)
{
    if (i % 2 == 0) { Console.WriteLine(i); break; }
}

常見錯誤與最佳實踐

現代替代:foreach / LINQ


// 簡單遍歷優先用 foreach
foreach (var item in collection) { }

// 需索引時
for (int i = 0; i < list.Count; i++) { var item = list[i]; }

// LINQ 替代複雜迴圈
var evens = Enumerable.Range(0, 100).Where(i => i % 2 == 0);

總結

for 迴圈是已知迭代次數、需索引控制、複雜更新邏輯的首選。掌握三區塊執行順序、巢狀結構、break/continue 流程控制,並知道何時改用 foreach/LINQ 獲得更清晰語意。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤正確做法
迴圈變數洩漏C# 迴圈變數作用域限定在 for 區塊,無洩漏問題
off-by-one 邊界錯誤偏好 i < length 而非 i <= length-1
修改迴圈變數導致邏輯錯誤避免在 statement 中修改 iterator 變數
無限迴圈無跳出確保有 break/return/throw 或 condition 會變 false