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

.NET 十年演進(上):C# 1.0~3.0 關鍵里程碑回顧

     編輯:關於.NET

C# 自 1998 年 Anders Hejlsberg 組建團隊起,十年來從後發制人躍居 TIOBE 排行榜前六。本文梳理 C# 1.0、2.0、3.0 三大版本的核心創新與設計哲學。

C# 1.0:誕生與立足(2002)

伴隨 .NET 平台誕生,Anders 從 Delphi 經驗出發,打造「兼取百家之長、摒棄複雜之弊」的現代語言:

  • 完整 OOP 支援:屬性、事件、委派、索引器、單一實作繼承+多介面繼承,避開 C++ 多重繼承陷阱。
  • CLR 跨平台運行時:通用類型系統 (CTS)、自動記憶體管理 (GC)、統一異常處理、完整 BCL 存取。

C# 2.0:變革之作(2005)

補足 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,生成本地碼,實現真正的「寫一次,適用處處」。

C# 3.0:涅槃重生(2007)

語法糖大爆發,為 LINQ 鋪路,極大提升表達力:

  • 自動屬性:public int Age { get; set; }
  • 物件/集合初始化器:new User { Name="Tom", Age=28 }
  • 隱式類型 var、匿名類型
  • 擴展方法:為現有類型「擴充」方法
  • Lambda 表達式:x => x + 1

LINQ:語言整合查詢,函數式體驗入侵 OO

var 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,始終未變。

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