關於本書
- 本書定位
- 閱讀方法
- 書寫慣例
- 本書用到的工具
- 範例程式與補充資料
- 版本更新紀錄
關於作者
C# 基礎語法
- 使用
var宣告隱含型別 - 使用
dynamic宣告動態型別 - 可為
null的型別 - 宣告與初始化
- 賦值與取值
- 判斷是否有值
- 與非
Nullable型別混用 - 物件初始設定式
- 集合的初始設定式
- 自動實作屬性
- 匿名型別
- 投射初始設定式
- 注意事項
- 擴充方法
- 下一步
泛型
- 為什麼要有泛型?
- 手動轉型的問題
- 土法煉鋼
- 泛型之美
- 細說泛型
- 泛型、型別參數、建構的型別
- 泛型是型別的樣板
- 建構式與解構式
- 預設值的表示法
- 型別參數的條件約束
- 泛型介面與結構
- 泛型方法
- 型別推斷
- 擴充方法與泛型類別
- 泛型與 C++ 樣板的差異
- 泛型的型別相容問題
- 核心概念:型別相容
- Covariance
- Contravariance
- 重點回顧
委派與 Lambda 表示式
- 委派
- 為什麼要用委派?
- C# 1.0 的寫法
- C# 2.0 的寫法
- C# 3.0 的寫法
- 泛型委派
- Lambda 表示式
- 運算式 lambda
- 陳述式 lambda
- 重點整理:概念圖
- 外部變數
- 運算式樹
- 總結
事件
- 基礎觀念
- 事件驅動程式設計
- 發行-訂閱模式
- 使用委派來實作事件
- 宣告委派型別
- 宣告委派變數
- 觸發事件
- 訂閱事件
- 加入與移除事件處理常式
- 使用
event關鍵字 - 提供觸發事件的方法
- .NET 事件程式設計的慣例
- 不要傳回值
- 在參數列提供來源物件
- 使用
EventArgs來包裝參數 - 使用現成的
EventHandler型別 - 更好的設計
- 事件參數僅提供唯讀屬性
- 避免意外中斷事件處理流程
- 使用事件存取子
- 管理大量事件
- 委派 vs. 事件
- 相同之處
- 相異之處
- 總結
C# 6
nameof表示式- 字串插值
Null條件運算子- 唯讀自動實作屬性
- 微妙議題:明確實作介面的唯讀屬性
- 自動屬性的初始設定式
- 以表示式為本體的成員
- C# 7 的改進
- 索引初始設定式
using static陳述式- 例外篩選條件
catch和finally區塊中的await
C# 7
- 宣告輸出變數
- Tuple 語法
- Tuple 元素名稱推導
- 無法推導元素名稱的情形
- Tuple 與匿名方法
- 分解式
- 為類別加入分解式
- 巢狀分解
- 模式匹配
- 模式匹配之
is陳述式 - 模式匹配之
switch陳述式 - 區域函式
- 捕捉區域變數
- 更好讀的數值表示法
- Ref Local 與 Ref Return
- Ref Local
- Ref Return
- 重新指派 Ref Local
- 用在哪裡?
- Ref 條件運算式
- Ref readonly
throw運算式async Main方法default運算式- 用於泛型
- 實值型別具備參考語意
- in 參數
- 唯讀結構
- 只能放在堆疊的結構(ref struct)
- 非後置的具名引數
private protected修飾詞- 結語
C# 8
- 結構成員可宣告唯讀
- 預設介面實作
- 可為 Null 的參考型別
- 開啟 Nullable Reference Types 功能
- 在個別檔案中使用 #nullable 指示詞
- 專案與方案層級的設定
- 重點整理
C# 9
- 頂層語句
- new 物件時可省略型別
- Init-only Setter
- 記錄
- 編譯器產生的程式碼
- 複製物件
ToString方法Equals方法Deconstruct方法- 結語
- 樣式比對的改進
- 改寫回傳型別
- IEnumerator 更容易支援 foreach
- Lambda 捨棄參數
- Interop 方面的改進
- 其他改進
C# 10
- File-scoped 命名空間
- 全域引用
- 使用 C# 檔案來管理全域引用
- 透過專案檔來管理全域引用
- 字串常數插補
- 巢狀屬性樣式
- Lambda 語法的改進
- 分解式的改進
- 記錄的改進
- 以結構實作的記錄
ToString方法可被密封- 結構的改進
- 匿名型別的非破壞式變形
- 字串插補的效能改進
- 字串插補處理器
CallerArgumentExpression特徵項AsyncMethodBuilder特徵項可套用至方法- 其他改進
列舉器
- 從
foreach說起 IEnumerator介面IEnumerable介面- 設計「可列舉的」類別
IEnumerable<T>與IEnumerator<T>介面- 重點回顧
LINQ
- 基本 觀念
- C# 的 LINQ 表示式
- 串接語法
- LINQ 提供者
IEnumerable<T>vs.IQueryable<T>- 延遲執行
- 重複求值
- 實務練習
- 篩選
- 排序
- 尋找單一項目
- 判斷是否符合特定條件
- 轉換物件
- 計數、最大/最小值、平均、彙總
- 分組
- 產生序列
- 擴增查詢結果
- 父子關聯
- LINQ 進階練習
- 誰的分數最高?
- 重點回顧
附錄 A:Visual Studio 的專案設定
- 指定編譯時所使用的 C# 版本
- 調整編譯器的警告
附錄 B:安裝與設定 Visual Studio Code
- 安裝
版權頁
- C# 本事
- 圖片來源
