C# 自 1998 年 Anders Hejlsberg 組建團隊起,十年來從後發制人躍居 TIOBE 排行榜前六。本文梳理 C# 1.0、2.0、3.0 三大版本的核心創新與設計哲學。
伴隨 .NET 平台誕生,Anders 從 Delphi 經驗出發,打造「兼取百家之長、摒棄複雜之弊」的現代語言:
補足 1.0 短板,引入改變開發範式的核心特性:
| 特性 | 意義 |
|---|---|
| 泛型 | CLR 級原生支援,實現演算法重用、消除裝箱/拆箱、類型安全 |
| 匿名方法 | 委派內嵌程式碼,Lambda 前身 |
| 可空類型 | T? 語法,值類型可表達 null |
| 部分類別 | 跨檔案定義同一類別,利於設計工具生成代碼 |
| 迭代器 | yield return 簡化 IEnumerable 實作 |
// 1.0 需為每種類型重寫
void Swap(ref int x, ref int y) { ... }
void Swap(ref string a, ref string b) { ... }
// 2.0 泛型一次搞定
void Swap<T>(ref T a, ref T b) {
T temp = a; a = b; b = temp;
}
運行時以實際類型替換 T,生成本地碼,實現真正的「寫一次,適用處處」。
語法糖大爆發,為 LINQ 鋪路,極大提升表達力:
public int Age { get; set; }new User { Name="Tom", Age=28 }var、匿名類型x => x + 1var users = new List<User> {
new User { Name="小王", Age=27 },
new User { Name="小張", Age=29 }
};
var result = from u in users
where u.Age < 30
orderby u.Age descending
select u;
任何實作 IEnumerable<T> 的資料源(記憶體集合、XML、資料庫)皆可查詢,型別安全、IntelliSense 全程支援,實現「代碼即查詢、查詢即代碼」。
從 1.0 的「務實 OOP」到 2.0 的「泛型抽象」,再到 3.0 的「聲明式/函數式融合」,C# 始終遵循 Anders 的美學原則:用語言級支援消除樣板代碼,讓開發者專注業務邏輯。這條主線延伸至 4.0 乃至今日的 C# 12/13,始終未變。