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

C# for 迴圈陣列賦值基礎教學與實用範例

     編輯:關於C#

for 迴圈是 C# 中遍歷與賦值陣列最基礎、最常用的控制結構。本文透過完整範例示範陣列宣告、初始化、賦值的標準寫法,並延伸至資料來源綁定的實務場景。

基本語法結構

for (int i = 0; i < array.Length; i++)
{
    array[i] = /* 計算或取得的值 */;
}

完整範例:字串陣列賦值

using System;

public class ArrayAssignmentDemo
{
    public static void Main()
    {
        int n = 10; // 陣列長度
        string[] strArray = new string[n];

        // 方式一:單純計算賦值
        for (int i = 0; i < n; i++)
        {
            strArray[i] = $"Item_{i:D3}"; // 格式化字串
        }

        // 方式二:從資料來源賦值(模擬 DataTable)
        // 假設有 DataTable dt,包含 "Name" 欄位
        // for (int i = 0; i < n && i < dt.Rows.Count; i++)
        // {
        //     strArray[i] = dt.Rows[i]["Name"].ToString();
        // }

        // 輸出驗證
        Console.WriteLine("陣列內容:");
        for (int i = 0; i < strArray.Length; i++)
        {
            Console.WriteLine($"[{i}] = {strArray[i]}");
        }
    }
}

實務場景:DataTable 轉字串陣列

public string[] DataTableColumnToArray(DataTable table, string columnName)
{
    if (table == null || !table.Columns.Contains(columnName))
        return Array.Empty();

    string[] result = new string[table.Rows.Count];
    
    for (int i = 0; i < table.Rows.Count; i++)
    {
        // 安全處理 DBNull
        var value = table.Rows[i][columnName];
        result[i] = value == DBNull.Value ? string.Empty : value.ToString();
    }
    
    return result;
}

現代替代方案比較

方式語法範例優點適用場景
for 迴圈 for (int i=0; i<len; i++) 索引可控、效能最佳、可反向/跳躍 需索引運算、高效能、複雜邏輯
foreach foreach (var item in arr) 語法簡潔、不可變更陣列內容 唯讀遍歷、LINQ 查詢前置
LINQ Select arr.Select((v,i) => ...).ToArray() 函數式、可鏈式操作、平行化易 資料轉換、篩選、投影
Array.ConvertAll Array.ConvertAll(arr, v => ...) 專為陣列轉換設計、無索引需求 單純元素轉換
Span/Memory span[i] = ... 零複製、高效能、跨陣列/堆疊/非託管 .NET Core 2.1+ 高效能場景

常見錯誤與最佳實踐

| 錯誤 | 正確做法 | |------|----------| | `i <= array.Length` | `i < array.Length`(索引 0 起始) | | 迴圈內修改陣列長度 | 使用 `List` 或預先計算大小 | | 未檢查 `null` 參考 | 進入迴圈前驗證陣列非 null | | 忽略 `DBNull.Value` | 資料庫來源務必判斷 `== DBNull.Value` |

效能提示

  • 將 array.Length 存入區域變數(JIT 通常會優化,但習慣上較好)
  • 避免迴圈內頻繁建立物件(如 `new StringBuilder()` 應移至迴圈外)
  • 大量數值運算考慮 Span 或 ArrayPool
  • 平行處理可用 Parallel.For(注意執行緒安全)

for 迴圈雖然基礎,但掌握其變體與替代方案,能在不同場景下寫出既清晰又高效的陣列操作程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved