這不是一本鉅細靡遺的 C# 語法字典。
本書將介紹 C# 語言當中較為核心、進階、或需要花較多時間深度理解的部分。不同於傳統程式設計書籍的是,本書特別強調「深度理解」,同時也鼓勵讀者善用 AI 工具來輔助學習和開發。在 AI 能夠幫我們生成大量程式碼的時代,開發者更需要具備判斷程式碼品質、安全性與效能的能力,以及如何精準地指揮 AI 寫出高品質的 C# 程式碼。
目標讀者
本書適合已經有 C# 或其他程式語言基礎、想要學習現代 C# 語法與實務細節的開發者,也適合想要從 junior 邁向 senior 等級的 .NET 工程師。
本書 不會 涵蓋程式設計入門與 C# 基礎語法,例如:
- 如何呼叫函式、傳遞參數
- 基礎的迴圈與決策敘述
- 物件導向程式設計的基礎觀念(類別、繼承、多型)
儘管如此,第一章還是以一個最簡單的「Hello World」範例作為起手式。這是希望有其他程式語言基礎的讀者可以快速進入 .NET 的世界。
本書特色
本書涵蓋 C# 1.0 至 C# 14,但會把重點放在更現代、進階、實用的程式寫法。
為了幫助你更有效地學習,本書採用以下方式來引導學習:
- 對比式教學:對於容易混淆的概念,展示「不建議的寫法(✗)」與「建議的寫法(✓)」,並說明差異與理由。
- 實務導向:不只教語法,也會說明「為什麼需要這個功能」、「何時該用」、「何時不該用」,以及可能的效能影響。
- 圖表輔助:在適當的地方添加視覺化圖表,輔助理解複雜概念並加深印象。
- Ask AI:書中會穿插一些 AI 提示詞,提醒讀者善用 AI 輔助學習。
- C# 版本標註:適時標註某項功能是在哪個 C# 版本引入,協助理解語言的演進脈絡。
- 範例程式碼連結:本書範例程式已上傳至 GitHub 平台,並於書中適當處提供對應的 GitHub 連結。
章節概覽
| 章節 | 重點概要 |
|---|---|
| 第 1 章:現代環境與基礎 | C# 設計哲學、.NET 執行環境、實值型別與參考型別、Boxing/Unboxing |
| 第 2 章:宣告與語法糖 | var、dynamic、物件初始設定式、自動屬性、匿名型別、Tuple 與解構 |
| 第 3 章:空值安全 | 可為 Null 的型別、Null 運算子、最佳實踐 |
| 第 4 章:不可變設計 | struct vs. class、record、init 存取子、with 運算式、不可變集合 |
| 第 5 章:錯誤處理與資源管理 | 例外處理、資源管理、例外 vs. 錯誤碼的取捨 |
| 第 6 章:模式比對 | 型別模式、Switch 運算式、屬性模式、串列模式、實戰範例 |
| 第 7 章:泛型 | 型別約束、共變性與逆變性、泛型效能特性 |
| 第 8 章:委派與事件 | 委派本質、Action/Func、Lambda 深入探討、發布/訂閱模式 |
| 第 9 章:LINQ 與函數式程式設計 | 序列與列舉器、迭代器、LINQ 查詢語法、IQueryable |
| 第 10 章:擴充方法 | 擴充方法語法與最佳實踐、擴充成員(C# 14)、區域方法 |
| 第 11 章:非同步程式設計 | async/await 深入、Task/ValueTask、Deadlock、非同步串流 |
| 第 12 章:高效能記憶體操作 | Span<T>、Memory<T>、ref struct、Array Pooling |
閱讀方法
可採取逐章閱讀的方式,或者挑選感興趣的主題來學習,若碰到一些不太熟悉的語法時,再跳回前面的章節把基礎的部分補起來。
章節依賴提示:
- 第 1~3 章是基礎,建議優先閱讀。
- 第 8 章(委派與事件)是第 9 章(LINQ)和第 11 章(非同步)的前置知識。
- 第 7 章(泛型)對理解 LINQ 和集合操作很有幫助。
- 第 10 章(擴充方法)能幫助你理解 LINQ 的運作機制。
重點還是要動手實作,才能達到最大的學習成效。在閱讀過程中,碰到任何疑問或想法,就動手寫點小程式來驗證看看吧。如此不僅能夠加深印象、確認自己真的了解,同時也有助於追根究柢、觸類旁通,把一些看似理所當然的小地方摸透。
書寫慣例
有些不易翻譯成中文的術語,除了第一次出現時採取中英並呈,往後再碰到相同術語時,有時會直接使用英文——這並非絕對,主要還是以降低閱讀阻力為優先考量。比如 synchronization context 這個名詞,由於翻譯成中文反而容易混淆,所以通常會直接寫英文。
開發環境需求
為了能夠跟著本書實作練習,你需要準備:
- .NET 10 SDK 或更新版本
- 開發工具:Visual Studio 2026(或 VS Code、Rider 等)
詳細的安裝步驟與工具選擇建議,請參閱〈第 1 章:現代環境與基礎〉的 1.2 節。
書附範例
所有範例程式碼皆公開於 GitHub 平台,網址如下:
https://github.com/huanlin/csharp-book-support
作者序:AI 時代還要學寫程式嗎?
在 AI(人工智慧)工具快速迭代翻新的時代,靠「感覺」和自然語言來讓工具寫程式(Vibe Coding)已經成為一種常態。那還需要學習程式語言嗎?
我自己也常在想這個問題。
Vibe Coding 有許多好處:它能提高生產力、提早驗證產品的可行性、促進快速迭代。但也有一些隱憂:可能不夠嚴謹、缺乏安全意識,並產生一種進展神速的假象。當產品快速建構之後,程式碼隨著時間累積而日益龐大複雜,開發團隊成員無法真正理解和掌握 AI 工具所生成的程式碼,最終可能會讓產品變得非常脆弱且難以維護。
因此,我認為學習程式語言雖然不代表一定要自己寫大部分的程式碼,但最起碼也要能看懂並審閱 AI 生成的程式碼,進而充分掌握(own)自己和 AI 一起開發出來的應用程式。更何況,以目前 AI 的進展來看,AI 還是會犯錯;對於關鍵任務(mission-critical)的軟體專案或核心部分,由 AI 生成的程式碼還是需要人工審閱來做最後的品質把關才行。
好比這本書的寫作過程,也使用了 AI 工具來協作與校稿,目的是希望這本書更完善、更少錯誤,以及加速出版流程。AI 在這些方面確實都幫了大忙。但也有許多次,我在檢視 AI 改動過的原稿時發現原本正確的內容被改成錯的,或者需要我明白寫下規則,例如:「C# 14 已經在 2025 年底正式發布,不要再幫我把相關語法標註為預覽版。」更嚴重的,偶爾還會出現「幽靈段落」—— AI 從別處搬了一整段無關的文字過來!
總之,AI 是強大的工具,但在許多重要的系統開發中,目前仍無法完全取代人類的判斷與審閱,且唯有開發者對程式碼有一定的掌握(ownership),長期來看,才能更有效地管理技術債、維護成本,以及 AI 工具的使用成本。我是基於這個想法,覺得寫這本書仍有一些意義——不僅希望能幫助讀者提升技術能力,對我自己也是這樣期許的。
持續學習,投資自己。
蔡煥麟 (2026 年 2 月)
註:Vibe Coding 一詞源自 Andrej Karpathy 於 2025 年 2 月在社群媒體上的一篇貼文。Karpathy 是知名的 AI 研究者,曾任 Tesla AI 總監與 OpenAI 共同創辦人之一。他描述自己寫程式時完全依賴 LLM(大型語言模型),只用自然語言描述需求,不太細看生成的程式碼,遇到錯誤就直接把錯誤訊息丟給 AI 修復——一切「憑感覺」(vibes)。
免費試讀
可以在本站免費試讀完整第一章:〈第 1 章:現代環境與基礎〉
或者,也可以到 Google Play 圖書 閱讀。
讀者留言