C# 語言演進與定位
C# 是一門簡單、安全、穩定的現代物件導向語言,源自 C/C++ 血統卻移除其複雜特性(如多重繼承、指針運算等),融合了 Visual Studio 的視覺化開發效率與 C++ 的執行效能。作為 .NET 平台的首選語言,C# 已通過 ECMA 與 ISO 國際標準化。
核心語言特性
與 Java 的異同
- 相似:單一繼承、介面、語法風格、編譯為中間碼(IL)於運行時 JIT 編譯
- 差異:
- 整合 Delphi 風格屬性語法,取代 Java 的 Getter/Setter
- 原生支援 委派與事件,實現型別安全的回調機制
- 提供泛型於運行時具體化(非 Java 的型別擦除),效能更優
- 支援實值型別、可空型別、迭代器、LINQ 整合查詢
- 允許
unsafe 區塊與指針操作,互操作非託管代碼
關鍵語法亮點
| 特性 | 說明 | 代碼示例 |
| 屬性 | 封裝欄位存取,支援邏輯驗證 | public int Age { get; set; } |
| 索引器 | 像陣列一樣存取物件 | public string this[int i] { get; } |
| 委派 | 型別安全的方法引用 | delegate void Handler(string msg); |
| 事件 | 基於委派的發布/訂閱 | event Handler OnChanged; |
| LINQ | 語言整合查詢,強型別 | var q = from x in list where x > 0 select x; |
| 非同步 | async/await 簡化並發 | await client.GetAsync(url); |
型別系統
- 實值型別:
struct、基本型別(int、bool、decimal 等),棧上分配,語義為複製
- 參考型別:
class、interface、delegate、string,堆上分配,語義為引用
- 統一型別系統:所有型別隱含繼承
object,實值型別可裝箱/拆箱為物件
.NET 應用模型
C# 支援全棧開發場景:
- 桌面:WPF、WinForms、WinUI 3、MAUI(跨平台)
- Web:ASP.NET Core(MVC、Razor Pages、Blazor、Minimal APIs)
- 雲原生:容器化、微服務、gRPC、Dapr、Orleans
- 行動:.NET MAUI、Xamarin(維護模式)
- 遊戲:Unity(C# 腳本)、Godot(C# 支援)
- IoT/嵌入式:.NET nanoFramework、Meadow
- 資料科學:ML.NET、TensorFlow.NET、ONNX Runtime
互操作能力
透過 P/Invoke 呼叫非託管 DLL、COM Interop** 整合 Windows 元件、C++/CLI 混合編程,C# 可無縫接觸系統層資源。
開發工具鏈
- IDE:Visual Studio 2022、VS Code (C# Dev Kit)、JetBrains Rider
- 建構:.NET SDK (CLI)、MSBuild、NuGet 套件管理
- 測試:xUnit、NUnit、MSTest、FluentAssertions
- 診斷:dotnet-trace、dotnet-counters、PerfView、BenchmarkDotNet
學習路徑建議
- 掌握 C# 核心語法與物件導向設計
- 深入理解 .NET 執行階段(CLR、GC、JIT、組件載入)
- 精通 ASP.NET Core Web API 開發與架構模式
- 學習 Entity Framework Core / Dapper 資料存取
- 實踐單元測試、整合測試、契約測試
- 探索容器化部署、可觀測性、CI/CD 流水線