C# 的範圍運算符(Range operator)是在 C# 8.0 中引入的一個功能,主要用於簡化對陣列、Span<T>、或 ReadOnlySpan<T> 等數據類型的部分範圍(子序列)的訪問。這個功能對於處理資料切片(slicing)非常有用,尤其是在你需要操作或提取陣列的特定部分時。 ### 範圍運算符的基本語法 範圍運算符使用一對方括號與兩個點 `..` 來定義範圍。範圍的兩邊可以是數字索引,或者是兩個索引運算符(`^`)表示從結尾開始的倒數位置。這里有一些基本用法: 1. **正向範圍**:`start..end` 表示從 `start` 索引開始,到 `end` 索引的前一個位置結束。例如,`0..5` 表示從第 0 個元素到第 4 個元素。 2. **開放範圍**: - 使用 `..end` 表示從序列開始到 `end` 的前一個位置。 - 使用 `start..` 表示從 `start` 索引開始到序列結尾。 - 單獨的 `..` 表示整個範圍。 3. **倒數索引**:使用 `^` 符號可以表示倒數索引。例如,`^1` 表示倒數第一個元素,而 `1..^1` 表示從第 1 個元素開始到倒數第一個元素的前一個位置結束。 ### 範圍運算符的實際例子 假設你有一個整數陣列如下: ```csharp int[] numbers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; ``` 以下是一些範圍運算符的使用示例: - **取得前五個元素**: ```csharp int[] firstFive = numbers[..5]; ``` - **取得最後五個元素**: ```csharp int[] lastFive = numbers[^5..]; ``` - **取得中間的元素**: ```csharp int[] middle = numbers[3..8]; // 從索引 3 到 7 的元素 ``` - **取得除了最後一個元素外的所有元素**: ```csharp int[] allButLast = numbers[..^1]; ``` 範圍運算符提供了一種更直觀且簡潔的方式來操作數據的子集,讓開發者可以輕鬆地根據需要提取或操作數據的特定部分,這在資料處理和分析的應用中非常實用。