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

C# for 迴圈陣列賦值完整指南:宣告、初始化、遍歷賦值

     編輯:關於C語言

前言

陣列是 C# 基礎資料結構,for 迴圈是遍歷陣列賦值的經典方式。本文系統說明一維陣列宣告、初始化、以及 for 迴圈賦值的完整模式。

陣列宣告與建立

固定長度陣列


// 宣告並建立長度為 n 的字串陣列,元素預設為 null
string[] strArray = new string[n];

// 整數陣列,元素預設為 0
int[] intArray = new int[10];

宣告時初始化 (隱含長度)


// 編譯器自動推斷長度
int[] scores = { 85, 92, 78, 96, 88 };
string[] days = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };

// 等價於
int[] scores = new int[] { 85, 92, 78, 96, 88 };

for 迴圈遍歷賦值模式

基本模式:索引賦值


string[] strArray = new string[n];

for (int i = 0; i < n; i++)
{
    // 計算或取得值
    string value = GetValue(i);  // 自訂邏輯
    strArray[i] = value;
}

資料來源賦值範例:DataTable 行資料


// 假設 DataTable 有 n 行
string[] columnValues = new string[dt.Rows.Count];

for (int i = 0; i < dt.Rows.Count; i++)
{
    // 取得第 i 行的 "ColumnName" 欄位值
    columnValues[i] = dt.Rows[i]["ColumnName"].ToString();
}

遞增/遞減/步長變化


// 反向填入
for (int i = n - 1; i >= 0; i--)
{
    array[i] = GetValue(n - 1 - i);
}

// 間隔填入 (每隔 2 個索引)
for (int i = 0; i < n; i += 2)
{
    array[i] = GetEvenIndexValue(i / 2);
}

foreach 唯讀遍歷 (無法賦值)


// 僅能讀取,無法修改陣列元素
foreach (string s in strArray)
{
    Console.WriteLine(s);
    // s = "new";  // 編譯錯誤:foreach 迭代變數唯讀
}

多維陣列簡介


// 二維陣列宣告
int[,] matrix = new int[3, 4];  // 3 列 4 行

// 二維陣列初始化
int[,] matrix = { 
    { 1, 2, 3, 4 },
    { 5, 6, 7, 8 },
    { 9, 10, 11, 12 }
};

// 雙重 for 迴圈遍歷
for (int row = 0; row < matrix.GetLength(0); row++)
{
    for (int col = 0; col < matrix.GetLength(1); col++)
    {
        matrix[row, col] = row * 10 + col;
    }
}

陣列與 List<T> 互轉


// 陣列 → List
string[] array = { "A", "B", "C" };
List list = new List(array);
// 或
List list = array.ToList();  // 需 using System.Linq;

// List → 陣列
List list = new List { "A", "B", "C" };
string[] array = list.ToArray();

常見錯誤與避坑

錯誤原因正確做法
array[i] = ... 索引超出範圍迴圈條件 i <= n 應為 i < nfor (int i = 0; i < array.Length; i++)
foreach 內修改陣列元素迭代變數唯讀改用 for 迴圈或 List
陣列未初始化即使用參考型別陣列元素預設 nullnew string[n] 確保建立陣列物件
結構體陣列元素屬性無法修改值型別回傳副本整體替換:array[i] = new Struct { Prop = val }

效能提示

  • array.Length 屬性存取極快 (JIT 內建),迴圈條件無需快取
  • 大量數值運算考慮 Span<T>、Memory<T> 避免邊界檢查
  • 平行處理可用 Parallel.For (需評估負載平衡開銷)

總結

for 迴圈配合索引器是陣列賦值最基本、最高效的方式。掌握宣告初始化語法、索引邊界條件、資料來源對應邏輯,即可熟練處理各類陣列填充需求。現代 C# 亦提供 List<T>、LINQ、Span<T> 等更高階抽象,視複雜度選擇適當工具。

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