C# 3.0(代號 Orcas)在 2.0 基礎上引入八大語言擴充,核心目標:支援高階函數式風格類庫,賦予結構化 API 與關聯式資料庫、XML 同等的查詢表達力。這八大特性環環相扣,共同構成 LINQ 的語言基礎。
| 特性 | 關鍵字/語法 | 核心價值 | 關聯特性 |
|---|---|---|---|
| 隱含型別區域變數 | var | 減少型別儀式,匿名型別必須 | 匿名型別、Lambda |
| 擴充方法 | this 參數 | 開放型別擴充,LINQ 運算子載體 | 查詢運算式、Lambda |
| Lambda 運算式 | => | 函數字面值,型別推斷、運算式樹 | 查詢運算式、運算式樹 |
| 物件/集合初始化器 | { Prop = val } | 宣告式初始化,原子性建構 | 匿名型別、查詢投影 |
| 匿名型別 | new { ... } | 臨時資料結構,投影與群組鍵 | var、初始化器、查詢運算式 |
| 隱含型別陣列 | new[] { ... } | 陣列字面值型別推斷 | 匿名型別、集合初始化器 |
| 查詢運算式 | from/select/where | 宣告式查詢語法,翻譯為方法鏈 | 擴充方法、Lambda、匿名型別 |
| 運算式樹 | Expression<T> | 程式碼即資料,遠端轉譯、動態建構 | Lambda、查詢提供者 |
var + 匿名型別 + 初始化器
↓
Lambda (型別推斷 + 運算式樹)
↓
擴充方法 (標準查詢運算子: Where, Select, GroupBy...)
↓
查詢運算式 (語法糖翻譯為上述方法鏈)
↓
LINQ to Objects / SQL / XML / 自訂提供者
IEnumerable<T> 擁有 Where/Select 等運算子,無需修改介面select new { ... }、集合建構零樣板var 為語境關鍵字,若有同名型別會發出警告但仍編譯C# 3.0 奠定的函數式基因持續演進:
async/await 建立於委派/Lambda 之上nameof、字串插值、運算式本體成員init 存取子、Record、with 運算式——將匿名型別不可變語意正式化C# 3.0 是 C# 語言演進史上的分水嶺,它不只是加入幾個語法糖,而是重新定義了 C# 與資料互動的方式。掌握這八大特性的協作機制,是精通現代 C# 開發的必經之路。