int[] arr = new int[5];
for (int i = 0; i < 5; i++) arr[i] = i + 1;
Console.WriteLine($"IsFixedSize: {arr.IsFixedSize}"); // True
Console.WriteLine($"IsReadOnly: {arr.IsReadOnly}"); // False
Console.WriteLine($"IsSynchronized: {arr.IsSynchronized}"); // False
Console.WriteLine($"Length: {arr.Length}"); // 5
Console.WriteLine($"LongLength: {arr.LongLength}"); // 5 (long)
Console.WriteLine($"Rank: {arr.Rank}"); // 1 (維度)
Console.WriteLine($"SyncRoot: {arr.SyncRoot}"); // 同步鎖物件

0 ~ Length-1IndexOutOfRangeException(執行期檢查,效能微小開銷)
// 錯誤示範
int[] a = new int[5];
a[5] = 10; // IndexOutOfRangeException

| 分類 | 方法 | 說明 | 範例 |
|---|---|---|---|
| 搜尋與排序 | IndexOf(Array, value) | 尋找第一個相符索引 | Array.IndexOf(arr, 3) |
LastIndexOf(Array, value) | 尋找最後相符索引 | ||
BinarySearch(Array, value) | 二分搜尋(需已排序) | ||
Reverse(Array) | 反轉元素順序 | Array.Reverse(arr) | |
Sort(Array) | 排序(預設遞增) | Array.Sort(arr) | |
Sort(Array, IComparer) | 自訂比較器排序 | ||
AsReadOnly(Array) | 回傳唯讀包裝 | Array.AsReadOnly(arr) | |
| 資訊查詢 | GetLength(dimension) | 指定維度長度 | arr.GetLength(0) |
GetLongLength(dimension) | long 版長度 | ||
GetLowerBound(dimension) | 指定維度下限(通常 0) | arr.GetLowerBound(0) | |
GetUpperBound(dimension) | 指定維度上限 | arr.GetUpperBound(0) | |
GetValue(indices...) | 取值(支援多維) | arr.GetValue(2) | |
SetValue(value, indices...) | 設值(支援多維) | arr.SetValue(111, 0) | |
GetEnumerator() | 取得列舉器 | ||
GetHashCode() | 雜湊碼 | ||
GetType() | 型別資訊 | ||
| 複製與轉換 | Clone() | 淺層複製(新陣列,元素同參考) | int[] c = (int[])arr.Clone() |
CopyTo(Array, index) | 複製到目標陣列 | arr.CopyTo(dest, 0) | |
Copy(Array, Array, length) | 靜態高效複製 | Array.Copy(src, dst, 5) | |
ConstrainedCopy | 原子性複製(全成功或全失敗) |
int[] original = { 1, 2, 3 };
int[] cloned = (int[])original.Clone();
int[] copied = new int[original.Length];
original.CopyTo(copied, 0);
// 修改複製品
cloned[0] = 10;
copied[1] = 20;
Console.WriteLine("Original: " + string.Join(",", original)); // 1,2,3
Console.WriteLine("Cloned: " + string.Join(",", cloned)); // 10,2,3
Console.WriteLine("Copied: " + string.Join(",", copied)); // 1,20,3

int[,] matrix = new int[3, 4]; // 3列4行
matrix[1, 2] = 99;
Console.WriteLine($"Rank: {matrix.Rank}"); // 2
Console.WriteLine($"Length: {matrix.Length}"); // 12
Console.WriteLine($"GetLength(0): {matrix.GetLength(0)}"); // 3
Console.WriteLine($"GetLength(1): {matrix.GetLength(1)}"); // 4
int[][] jagged = new int[3][];
jagged[0] = new int[2];
jagged[1] = new int[5];
jagged[2] = new int[3];
// 每列長度可不同
int[] arr = new int[5];
for (int i = arr.GetLowerBound(0); i <= arr.GetUpperBound(0); i++)
arr[i] = i + 1;
for (int i = arr.GetLowerBound(0); i <= arr.GetUpperBound(0); i++)
Console.WriteLine($"arr[{i}] = {arr[i]}");
適用於任意維度、任意下限(雖然 C# 陣列下限固定 0)。
for 迴圈:避免 foreach 列舉器配置Array.Copy 或 Buffer.BlockCopy:高度優化Span<T>/Memory<T>:避免配置、支援切片Resize:預估容量用 List<T> 再 ToArray()C# 陣列提供豐富的靜態/實例方法涵蓋搜尋、排序、複製、界限查詢。核心屬性 Length、Rank、GetLowerBound/GetUpperBound 構成安全存取基礎。Clone() 建立新陣列,CopyTo() 複製到既有陣列,兩者皆為淺層複製。現代高效能場景請優先考慮 Span<T>、Memory<T>、ArrayPool<T> 進階 API。